国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

AngularJS 限定$scope的范圍實例詳解

2024-05-06 15:15:31
字體:
來源:轉載
供稿:網友

限定$scope的范圍

JavaScript基于原型的繼承與面向對象中基于類的繼承有著微妙的區別,這通常不是什么問題,但這個微妙之處在使用$scope時就會表現出來。在AngularJS中,每個$scope都會繼承父$scope,最高層稱之為$rootScope。($scope與傳統指令有些不同,它們有一定的作用范圍i,且只繼承顯式聲明的屬性。)

由于原型繼承的特點,在父類和子類間共享數據不太重要,不過如果不小心的話,也很容易誤用了一個父$scope的屬性。

比如說,我們需要在一個導航欄上顯示一個用戶名,這個用戶名是在登錄表單中輸入的,下面這種嘗試應該是能工作的:

<divng-controller="navCtrl">  <span>{{user}}</span>  <divng-controller="loginCtrl">    <span>{{user}}</span>    <inputng-model="user"></input>  </div></div>

那么問題來了……:在text input中設置了user的ng-model,當用戶在其中輸入內容時,哪個模版會被更新?navCtrl還是loginCtrl,還是都會?

如果你選擇了loginCtrl,那么你可能已經理解了原型繼承是如何工作的了。

當你檢索字面值時,原型鏈并不起作用。如果navCtrl也同時被更新的話,檢索原型鏈是必須的;但如果值是一個對象,這就會發生。(記住,在javascript中,函數、數組和對象都是對象)

所以為了獲得預期的行為,需要在navCtrl中創建一個對象,它可以被loginCtrl引用。

<div ng-controller="navCtrl">  <span>{{user.name}}</span>  <div ng-controller="loginCtrl">    <span>{{user.name}}</span>    <input ng-model="user.name"></input>  </div></div>

現在,由于user是一個對象,原型鏈就會起作用,navCtrl模版和$scope和loginCtrl都會被更新。

這看上去是一個很做作的例子,但是當你使用某些指令去創建子$scope,如ngRepeat時,這個問題很容易就會產生。

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 磐石市| 新绛县| 宝兴县| 红桥区| 保山市| 南靖县| 宕昌县| 大同县| 哈尔滨市| 蓬安县| 通许县| 平江县| 永兴县| 婺源县| 天镇县| 大英县| 通山县| 庄河市| 武隆县| 黑山县| 东安县| 天峻县| 灯塔市| 克什克腾旗| 三门峡市| 平塘县| 大名县| 开鲁县| 吕梁市| 建宁县| 本溪| 历史| 潜江市| 亳州市| 沅江市| 华蓥市| 揭西县| 六枝特区| 玉溪市| 大冶市| 商丘市|