国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

scope in Angularjs

cikenerd / 1344人閱讀

摘要:基于原型的繼承性視圖存在嵌套的時候,內層的是可以繼承到外層的數據的。這者的區別就是在中繼承了中的作用域。通過監聽某個的是否發生變化來觸發相應的。第三個屬性值,當為規定的是比較對象的值,而不是引用。這樣可以非常好的將一些可服用的代碼抽離出來。

scope基于原型的繼承性

視圖存在嵌套的時候,內層的controller是可以繼承到外層的controller數據的。

scope在angularjs里的繼承性(基于原型的繼承性):

</>復制代碼

  1. html:
  2. Parent {{info}}
  3. child {{info}}

當頁面一開始加載完畢之后,通過在parentinput里面輸入內容的時候,在childinput里面也會發生響應。這個時候,subController里的info的值,是繼承parent里面的mainController的值。

此時,如果在childinput里面輸入內容,會發現child里面的info發生了變化,但是parent里面并未發生變化。

此時如果在parentInput里面輸入值的話,僅僅是Parentinfo發生了變化,而childinfo是不會發生變化的。

然后我再換一種寫法

</>復制代碼

  1. html:
  2. parent {{msg.info}}
  3. child {{msg.info}}
  4. js:
  5. app.controller("mainController", function(){
  6. $scope.msg = {
  7. info: "message"
  8. };
  9. });
  10. app.controller("subController", function(){
  11. });

ng-model此時變成了某個對象的屬性。那么現在不管你更改的是parent中的input還是child中的input,都會引起視圖相應的變化。

這2者的區別就是在subController中繼承了mainController中的作用域。當ng-modelprimitive值時,剛初始化的時候,在subController里面因為,會新建一個相同的變量,這個時候,如果再在subController里面獲取這個primitive的時候,就直接在subController里面就能得到。

而如果mainController里面的ng-model是個對象的屬性的時候,subController里面ng-model是對這個對象的引用。那么不管更改mainController還是subController里面的ng-model視圖里面都會發生變化。

在Angularjs里面$scope有個$watch方法,當需要時更新DOM。通過監聽某個model的是否發生變化來觸發相應的callback

依然是上面的例子:

</>復制代碼

  1. html:
  2. parent
  3. js:
  4. app.controller("mainController", function(){
  5. $scope.msg = {
  6. info: "message"
  7. };
  8. $scope.$watch("msg", function(val){
  9. console.log(val);
  10. })
  11. });

除了頁面初始化后,控制臺會輸出{info: "message"}外,不過input里面的值如何變化。控制臺都不會輸出任何內容了。這是因為$watch是比較的msg這個對象的引用是否發生了變化,很顯然這個地方msg的引用(heap里面存放的地址)并沒用發生變化,僅僅是msg.info的值發生了變化。
但是我改變另外一種寫法:

</>復制代碼

  1. $scope.$watch("msg", function(val){
  2. console.log(val);
  3. }, true);

這個是否就能監聽到msg.info發生變化后,msg的內容了。第三個屬性boolean值,當為true,規定的是比較對象的值,而不是引用。

ng-repeat會給每個循環新建一個作用域。

ng-includeng-view都是動態加載視圖,這個時候也會新建作用域

當然還有ng-switch,directive也會有這種scope繼承的情況出現。

具體深入理解angularjsscope,請移步Understanding scopes

Angularjs 1.2 “Controller as” polyfill

</>復制代碼

  1. html:
  2. {{parent.name}}
  3. {{child.name}}
  4. js:
  5. app.controller("parentController", ApiParentFn);
  6. function ApiCtrlFn(){
  7. this.name = "XL";
  8. }
  9. app.controller("childController", ApiChildFn);
  10. function ApiChildFn(){
  11. this.name = "xl";
  12. }

最后視圖內容大家可以動手試試。

最近也試著多用這個語法去寫控制器,首先寫法上更偏向OO的風格。在這個ApiParetnFn上定義不同的model。

</>復制代碼

  1. app.controller("mainCtrl", ["$http", ApiCtrlFn]);
  2. function ApiCtrlFn(http){
  3. this.http = http;
  4. this.name = "XL";
  5. }
  6. ApiCtrlFn.prototype = {
  7. reqPostFn: function(url){
  8. this.http.get(url).success(function(data){
  9. xxxx
  10. })
  11. .error(function(data){
  12. xxxx
  13. })
  14. },
  15. changeNameFn: function(name){
  16. this.name = name;
  17. }
  18. }
  19. html:
  20. {{this.name}}

ApiParentFn.prototype上定義不同的方法。這樣可以非常好的將一些可服用的代碼抽離出來。不同的控制器只需要對構造函數進行實例化,然后調用不同的原型上定義的方法就OK了。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/78210.html

相關文章

  • 創建自定義指令

    摘要:我們通常通過其區分大小寫的規范化名稱例如,來定義指令。在其目前的實現上,我們應該需要去創建一些不同點控制器用來重用這個指令。如此,綁定是理想的將回調函數綁定到指令行為。這被指令調用指明。前綴表示該指令在其父元素上搜索控制 文檔翻譯至angularjs.org. 文檔解釋了您何時想在AngularJS應用程序中創建自己的指令,以及如何實現它們。 | 建議搭配原文食用 | 什么是指令? 在...

    zzbo 評論0 收藏0
  • Controller As in Angularjs

    摘要:因為在里面是基于原型進行繼承的。事實上注入后,即提供了一個,可以在這個上面綁定屬性和方法。當使用語法的時候,事實上是綁定到了的對象上面。注意這個地方執行順序是從子元素開始再到父元素的。即在執行階段前確保執行完畢。 Controller As angular .module(app, []) .controller(DemoController, ...

    mo0n1andin 評論0 收藏0
  • angular性能優化心得

    摘要:本文針對的讀者具備性能優化的相關知識雅虎條性能優化原則高性能網站建設指南等擁有實戰經驗。這種機制能減少瀏覽器次數,從而提高性能。僅會檢查該和它的子,當你確定當前操作僅影響它們時,用可以稍微提升性能。 搬運自: http://atian25.github.io/2014/05/09/angular-performace/ 不知不覺,在項目中用angular已經半年多了,踩了很多坑...

    guqiu 評論0 收藏0
  • Angularjs 開發指南 自定義指令(custom directives)

    摘要:使用開發,很重要的一步是需要開發自定義的指令。接下來分幾個步驟記錄如何開發一個自定義的指令。對這個元素及其子元素進行變形之類的操作是安全的。鏈接函數鏈接函數負責注冊事件和更新。說明和是指令的關鍵部分,留在下一章中詳細討論。 使用Angularjs開發,很重要的一步是需要開發自定義的指令(custom directives)。接下來分幾個步驟記錄如何開發一個自定義的指令。 目錄: 指令...

    calx 評論0 收藏0
  • 使用AngularJS構建應用時遇到的問題及解決方案(版本為1.3.9)

    摘要:最近在公司使用用完成了一個項目,在此記錄一下過程中遇到的問題及解決方案。其他兩種方法可參考站內文章控制器如何通信結語以上為我在編寫一個應用時遇到的問題及解決方案,記錄并分享出來,歡迎大家指正 最近在公司使用用AngularJS(1.3.9)完成了一個項目,在此記錄一下過程中遇到的問題及解決方案。 使用$http服務發送ajax請求時后端無法判斷請求是XMLHttpRequest 問題...

    cuieney 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<