AngularJS ngModel實(shí)現(xiàn)指令與輸入直接的數(shù)據(jù)通信
首先來看一下效果,在拖動(dòng)input[range]的時(shí)候,下面的動(dòng)畫會(huì)隨著拖動(dòng)而發(fā)生改變,利用的原理就是ngModel實(shí)現(xiàn)的通信。實(shí)現(xiàn)的原理就是通過在指令中引入^ngModel來實(shí)現(xiàn)指令內(nèi)部與外部之間的通信。
下面有幾個(gè)點(diǎn):
1、$formatters中push進(jìn)去的函數(shù)實(shí)現(xiàn)modelValue轉(zhuǎn)成valeuValue。
2、$render方法實(shí)現(xiàn)把viewValue中的值渲染到模板中。
3、$setViewValue實(shí)現(xiàn)的是更新模板中的viewValue值。
4、$parsers中push進(jìn)去的方法實(shí)現(xiàn)valueValue轉(zhuǎn)成modelValue。
<!DOCTYPE html> <html lang="en" ng-app="rangeApp"> <head> <meta charset="UTF-8"> <title></title> </head> <script src="lib/angular.min.js" type="text/javascript"></script> <script src="lib/jquery-2.1.4.min.js" type="text/javascript"></script> <style> div{ position: absolute; } .ani{ width: 200px; height: 200px; border: 1px solid aqua; position: absolute; top: 100px; left: 200px; -webkit-transform: rotateX(120deg); -moz-transform: rotateX(120deg); -ms-transform: rotateX(120deg); -o-transform: rotateX(120deg); transform: rotateX(20deg); } .active{ background: red; } ::-webkit-slider-runnable-track { border: 1px solid #a0b3d6; background: #f0f3f9; } ::-webkit-slider-thumb { outline: 1px dotted #a0b3d6; background-color: #34538b; } ::-webkit-slider-runnable-track:hover { background-color: #cad5eb; } ::-moz-range-track { border: 1px solid #a0b3d6; height: 20px; background: #f0f3f9; } ::-moz-range-thumb { background: #34538b; height: 30px; } ::-ms-fill-lower { background: orange; } ::-ms-fill-upper { background: green; } ::-ms-thumb { background: red; } ::-ms-ticks-before { display: block; color: black; } ::-ms-ticks-after { display: block; color: blue; } ::-ms-track { padding: 5px; } ::-ms-tooltip { display: none; /* 數(shù)值提示 只能是display或visibility */ } </style> <body ng-controller="rangeCon"> <input type="range" ng-model="rangeModel"/> <animate-span ng-model="rangeModel"></animate-span> </body> <script> var app=angular.module("rangeApp",[]) .controller("rangeCon",["$scope", function ($scope) { $scope.rangeModel=30; }]) .directive("animateSpan", function () { return{ restrict:'EA', replace:true, scope:{}, require:'^ngModel', template:'<div><span class="ani" ng-model="dis">{{dis}}</span></div>', link: function (scope,element,attr,ngModelController) { var rotateX= function (modelValue) { var modelValue=parseInt(modelValue)||0; var value="rotateX("+modelValue*3+"deg)"; return { dis:value }; }; var rotateY= function (modelValue) { var modelValue=parseInt(modelValue)||0; var value="rotateY("+modelValue*3+"deg)" return { dis:value } }; var rotateZ= function (modelValue) { var modelValue=parseInt(modelValue)||0; var value="rotateZ("+modelValue*3+"deg)"; return { dis:value } }; //scope.dis=30; ngModelController.$formatters.push(rotateZ);//modelValue到viewValeu之間的通信。 ngModelController.$render= function () {//把viewModel渲染到模板中 scope.dis=ngModelController.$viewValue.dis; $(element).find("span").css("-webkit-transform",scope.dis) }; scope.$watch('dis', function () {//更新模板上的viewValue ngModelController.$setViewValue({ dis:scope.dis }) }) } } }) </script> </html>
以上就是對(duì)AngularngModel實(shí)現(xiàn)指令與輸入直接的數(shù)據(jù)通信的資料整理,后續(xù)繼續(xù)補(bǔ)充相關(guān)資料,謝謝大家對(duì)本站的支持!
- JavaScript Window窗口對(duì)象屬性和使用方法
- swing分割窗口控件JSplitPane使用方法詳解
- javascript+html5+css3自定義彈出窗口效果
- JavaScript實(shí)現(xiàn)單擊網(wǎng)頁(yè)任意位置打開新窗口與關(guān)閉窗口的方法
- JS簡(jiǎn)單實(shí)現(xiàn)父子窗口傳值功能示例【未使用iframe框架】
- Vue.js仿微信聊天窗口展示組件功能
- JS檢測(cè)window.open打開的窗口是否關(guān)閉
- 使用Ajax與服務(wù)器(JSON)通信實(shí)例
- AngularJS通過$http和服務(wù)器通信詳解
- 如何利用js在兩個(gè)html窗口間通信
相關(guān)文章
angular 組件通信的幾種實(shí)現(xiàn)方式
這篇文章主要介紹了angular 組件通信的幾種實(shí)現(xiàn)方式,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-07-07AngularJS實(shí)現(xiàn)的回到頂部指令功能實(shí)例
這篇文章主要介紹了AngularJS實(shí)現(xiàn)的回到頂部指令功能,結(jié)合實(shí)例形式分析了AngularJS返回到頂部功能的具體步驟與相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-05-05Angular.js組件之input mask對(duì)input輸入進(jìn)行格式化詳解
這篇文章主要給大家介紹了關(guān)于Angular.js組件之input mask對(duì)input輸入進(jìn)行格式化的相關(guān)內(nèi)容,文中通過示例代碼詳細(xì)介紹了將銀行卡號(hào)和日期的方法,需要的朋友們可以參考借鑒,下面來一起看看吧。2017-07-07AngularJS 限定$scope的范圍實(shí)例詳解
這篇文章主要介紹了AngularJS 限定$scope的范圍實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-06-06Angular.JS中指令ng-if的注意事項(xiàng)小結(jié)
這篇文章主要給大家分享了關(guān)于Angular.JS中指令ng-if的一點(diǎn)注意事項(xiàng),分享出來供大家參考學(xué)習(xí),文中介紹的還是相對(duì)來說比較詳細(xì),對(duì)大家具有一定的參考借鑒價(jià)值,需要的朋友們下面來一起看看吧。2017-06-06Angular中的結(jié)構(gòu)指令模式及使用詳解
這篇文章主要為大家介紹了Angular中的結(jié)構(gòu)指令模式及使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08