angular 如何使用$scope.$watch()以及使用了controllerAs

@(E-angular學(xué)習(xí))

angular 如何使用$scope.$watch()以及使用了controllerAs

angular的watch監(jiān)控值的變化方便了很多事情,下面講解幾種watch的寫法帝美,特別是有controllerAs的值以及使用this的時(shí)候亭枷,如果優(yōu)雅的使用watch

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>echats</title>
  <!-- <script src="http://cdn.bootcss.com/echarts/3.4.0/echarts.common.js"></script> -->
  <!-- <script src="https://cdn.bootcss.com/echarts/3.4.0/echarts.common.min.js"></script> -->
  <script src="js/lib/echarts/dist/echarts.min.js"></script>
  <!-- <script src="http://cdn.static.runoob.com/libs/angular.js/1.4.6/angular.min.js"></script> -->
  <script src="js/lib/angular/angular.min.js"></script>
  <script src="js/lib/angular-route/angular-route.js"></script>
  <!-- <script src="js/lib/angular/release/angular-ui-router.js"></script> -->
  <link rel="stylesheet" href="js/lib/bootstrap/dist/css/bootstrap.min.css">
  <script src="js/lib/jquery/dist/jquery.min.js"></script>
  <script src="js/lib/bootstrap/dist/js/bootstrap.min.js"></script>
<script src="app.js"></script>
  <script src="http://www.page2images.com/js/p2i.js"> </script>
        <!-- <script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js"></script>
        <script src="http://apps.bdimg.com/libs/angular-route/1.3.13/angular-route.js"></script> -->
        <!-- <script src="http://cdn.static.runoob.com/libs/angular.js/1.4.6/angular.min.js"></script>
        <script src="https://apps.bdimg.com/libs/angular-route/1.3.13/angular-route.js"></script> -->

</head>

<body ng-app="app">
  
<div ng-controller="myCtrl as Ctrl">
  不使用controllerAs的:
<input type="text" ng-model = "person.name">
name的變化 <span>我的名字是{{person.name}}</span>

<hr>

這個(gè)是使用controllerAs的:
<input type="text" ng-model = "Ctrl.people.name">
<span>{{Ctrl.people.name}}</span>
</div>

<script>
 // angular.module("app",["app.ui"]);
angular.module("app",[]);
angular.module("app")
.controller("myCtrl",function($scope){
  var vm = this;
  $scope.person = {
    "name":"王小二"
  };
  //當(dāng)使用scope的時(shí)候就可以監(jiān)控person屬性了供汛,第三個(gè)參數(shù) true是針對(duì)引用類型的情況橡淑,當(dāng)為true的時(shí)候也監(jiān)控 屬性中的值的變化。
  $scope.$watch("person",function(newValue,oldValue){
    console.log("我的不帶controllerAs的name是",newValue);
  },true);


  vm.people = {
    "name":"李小三"
  }
  //當(dāng)我們使用this的時(shí)候抗俄,Html中使用的是controllerAs 這種情況就不能使用了
  $scope.$watch("people",function(newValue,oldValue){
    console.log("我的帶controllerAs的name是",newValue);
  },true);
  //注意區(qū)別炉抒,當(dāng)我們使用vm.people的時(shí)候也是不行的奢讨。加上第三個(gè)參數(shù)也是不行的
  $scope.$watch("vm.people",function(newValue,oldValue){
    console.log("我的帶vm.people的name是",newValue);
  });

  //可以使用下面幾種方法,
  //第一種,這一種是改監(jiān)控的對(duì)象焰薄,只要監(jiān)控的對(duì)象改為ControllerAs的值即可拿诸,同樣第三個(gè)參數(shù)設(shè)為true,這種雖說(shuō)是最簡(jiǎn)單的塞茅,但是要知道controllerAs的值亩码,不太友好
  $scope.$watch("Ctrl.people",function(newValue,oldValue){
    console.log("Ctrl.people的name是",newValue);
  },true);

  //第二種:這種雖然不用知道controllerAs的值,但是過(guò)于繁瑣凡桥;
  $scope.$watch(function() {
    return vm.people
  }.bind(vm), function(newName) {
     console.log("帶有return的值vm.people的name是",newName);
  }.bind(vm),true);
  //第三種蟀伸,這是一種最友好的方式不用關(guān)心controllerAs的值,
  $scope.$watch(function(scope){
    return vm.people;
  },function(newValue,oldValue){
    console.log("另一種vm.people的name是",newValue);
  },true);

})
</script>
</body>

</html>

參考文獻(xiàn):
Understanding How To Use $scope.$watch() With Controller-As In AngularJS
Using $scope.$watch when using `this` scope in controller

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市啊掏,隨后出現(xiàn)的幾起案子蠢络,更是在濱河造成了極大的恐慌,老刑警劉巖迟蜜,帶你破解...
    沈念sama閱讀 221,548評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件刹孔,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡娜睛,警方通過(guò)查閱死者的電腦和手機(jī)髓霞,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)畦戒,“玉大人方库,你說(shuō)我怎么就攤上這事≌险” “怎么了纵潦?”我有些...
    開封第一講書人閱讀 167,990評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)垃环。 經(jīng)常有香客問(wèn)我邀层,道長(zhǎng),這世上最難降的妖魔是什么遂庄? 我笑而不...
    開封第一講書人閱讀 59,618評(píng)論 1 296
  • 正文 為了忘掉前任寥院,我火速辦了婚禮,結(jié)果婚禮上涛目,老公的妹妹穿的比我還像新娘秸谢。我一直安慰自己,他們只是感情好泌绣,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,618評(píng)論 6 397
  • 文/花漫 我一把揭開白布钮追。 她就那樣靜靜地躺著,像睡著了一般阿迈。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上轧叽,一...
    開封第一講書人閱讀 52,246評(píng)論 1 308
  • 那天苗沧,我揣著相機(jī)與錄音,去河邊找鬼炭晒。 笑死待逞,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的网严。 我是一名探鬼主播识樱,決...
    沈念sama閱讀 40,819評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了怜庸?” 一聲冷哼從身側(cè)響起当犯,我...
    開封第一講書人閱讀 39,725評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎割疾,沒(méi)想到半個(gè)月后嚎卫,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,268評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡宏榕,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,356評(píng)論 3 340
  • 正文 我和宋清朗相戀三年拓诸,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片麻昼。...
    茶點(diǎn)故事閱讀 40,488評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡奠支,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出抚芦,到底是詐尸還是另有隱情倍谜,我是刑警寧澤,帶...
    沈念sama閱讀 36,181評(píng)論 5 350
  • 正文 年R本政府宣布燕垃,位于F島的核電站枢劝,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏卜壕。R本人自食惡果不足惜您旁,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,862評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望轴捎。 院中可真熱鬧鹤盒,春花似錦、人聲如沸侦副。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,331評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)秦驯。三九已至尺碰,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間译隘,已是汗流浹背亲桥。 一陣腳步聲響...
    開封第一講書人閱讀 33,445評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留固耘,地道東北人题篷。 一個(gè)月前我還...
    沈念sama閱讀 48,897評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像厅目,于是被迫代替她去往敵國(guó)和親番枚。 傳聞我的和親對(duì)象是個(gè)殘疾皇子法严,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,500評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容