詳解Angular的雙向數(shù)據(jù)綁定(MV-VM)
angular的核心MVVM,下面來(lái)看看MV(數(shù)據(jù)到視圖)。
<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>
執(zhí)行上面代碼,我們使用setTimeout延遲兩秒去更新數(shù)據(jù)(M),我們的視圖(V)并沒(méi)有發(fā)生改變。
其實(shí)數(shù)據(jù)確實(shí)發(fā)生改變了,但是我們的視圖(V)并沒(méi)有及時(shí)刷新,原因是原生的setTimeout不具備刷新的功能。
angular為我們提供了setTimeout的服務(wù),$timeout,需要在Aaa中引入該服務(wù) !
<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(數(shù)據(jù))到V(視圖)的過(guò)程。
如果我也想讓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>
也能實(shí)現(xiàn)刷新視圖!
在舉個(gè)例子:
<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>
我們?cè)贗D為Aaa的元素綁定了一個(gè)點(diǎn)擊事件,當(dāng)發(fā)生點(diǎn)擊的時(shí)候?qū)ame值改為Hi,
當(dāng)然,也可以傳遞一個(gè)函數(shù),來(lái)實(shí)現(xiàn)更多的功能。
<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,相信你也知道如何使用鼠標(biāo)移入和移出的這些常用的事件了。
看最后一個(gè)例子,V(視圖)到M(數(shù)據(jù))的過(guò)程。
<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>
我們?cè)趇nput標(biāo)簽上綁定了一個(gè)ng-model,這個(gè)就是綁定的數(shù)據(jù),會(huì)默認(rèn)填充到input的value上,當(dāng)我們的input值發(fā)生改變的時(shí)候,對(duì)應(yīng)在$scope中的數(shù)據(jù)也會(huì)發(fā)生改變,從而影響到視圖中的p標(biāo)簽的值也會(huì)發(fā)生改變。

以上就是本文的全部?jī)?nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,同時(shí)也希望多多支持腳本之家!
- Angular和Vue雙向數(shù)據(jù)綁定的實(shí)現(xiàn)原理(重點(diǎn)是vue的雙向綁定)
- AngularJS入門(mén)教程之?dāng)?shù)據(jù)綁定原理詳解
- AngularJS入門(mén)教程之?dāng)?shù)據(jù)綁定用法示例
- AngularJS 雙向數(shù)據(jù)綁定詳解簡(jiǎn)單實(shí)例
- AngularJS實(shí)踐之使用NgModelController進(jìn)行數(shù)據(jù)綁定
- 詳解JavaScript的AngularJS框架中的作用域與數(shù)據(jù)綁定
- angularjs學(xué)習(xí)筆記之雙向數(shù)據(jù)綁定
相關(guān)文章
AngularJs定制樣式插入到ueditor中的問(wèn)題小結(jié)
這篇文章主要介紹了AngularJs定制樣式插入到ueditor中的問(wèn)題小結(jié)的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-08-08
解決Angular2 router.navigate刷新頁(yè)面的問(wèn)題
今天小編就為大家分享一篇解決Angular2 router.navigate刷新頁(yè)面的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-08-08
使用AngularJS 跨站請(qǐng)求如何解決jsonp請(qǐng)求問(wèn)題
這篇文章主要介紹了使用AngularJS 跨站請(qǐng)求如何解決jsonp請(qǐng)求問(wèn)題,下面通過(guò)本文給大家分享解決辦法,需要的朋友參考下2017-01-01
詳解angular路由高亮之RouterLinkActive
這篇文章主要介紹了詳解angular路由高亮之RouterLinkActive,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-04-04

