angular的核心MVVM,下面來看看MV(數據到視圖)。
<div ng-controller="Aaa"> <p>{{name}}</p></div><script type="text/javascript"> function Aaa($scope){ $scope.name = 'hello AngularJs'; setTimeout(function(){ $scope.name = 'Hi'; },2000); };</script>執行上面代碼,我們使用setTimeout延遲兩秒去更新數據(M),我們的視圖(V)并沒有發生改變。
其實數據確實發生改變了,但是我們的視圖(V)并沒有及時刷新,原因是原生的setTimeout不具備刷新的功能。
angular為我們提供了setTimeout的服務,$timeout,需要在Aaa中引入該服務 !
<div ng-controller="Aaa"> <p>{{name}}</p></div><script type="text/javascript"> function Aaa($scope,$timeout){ $scope.name = 'hello AngularJs'; $timeout(function(){ $scope.name = 'Hi'; },2000); };<script>這樣就可以刷新視圖了,M(數據)到V(視圖)的過程。
如果我也想讓setTimeout也具有刷新視圖的功能怎麼辦 ? 可以借助$apply方法!
<div ng-controller="Aaa"> <p>{{name}}</p></div><script type="text/javascript"> function Aaa($scope){ $scope.name = 'hello AngularJs'; setTimeout(function(){ $scope.$apply(function(){ $scope.name = 'Hi'; }); },2000); }<script>也能實現刷新視圖!
在舉個例子:
<div id="Aaa" ng-controller="Aaa" ng-click="name='Hi'"> <p>{{name}}</p></div><script type="text/javascript"> function Aaa($scope){ $scope.name = 'hello AngularJs'; };</script>我們在ID為Aaa的元素綁定了一個點擊事件,當發生點擊的時候將name值改為Hi,
當然,也可以傳遞一個函數,來實現更多的功能。
<div id="Aaa" ng-controller="Aaa" ng-click="show()"> <p>{{name}}</p></div><script type="text/javascript"> function Aaa($scope){ $scope.name = 'hello AngularJs'; $scope.show = function(){ $scope.name = 'Hi'; }; }</script>看到了click,相信你也知道如何使用鼠標移入和移出的這些常用的事件了。
看最后一個例子,V(視圖)到M(數據)的過程。
<div ng-controller="Aaa"> <input type="text" ng-model="name"/> <p>{{name}}</p></div><script type="text/javascript"> function Aaa($scope){ $scope.name = 'hello AngularJs'; };</script>我們在input標簽上綁定了一個ng-model,這個就是綁定的數據,會默認填充到input的value上,當我們的input值發生改變的時候,對應在$scope中的數據也會發生改變,從而影響到視圖中的p標簽的值也會發生改變。

以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持武林網!
新聞熱點
疑難解答