『AngularJS』理解$Scope


理解$Scope

執行概要

在AngularJS,一個子scope通常原型繼承於它的父scope。應用於這個規則的表達式是一個使用scope:{...}的指令,這將創建一個『孤島』scope(非原型繼承)。這種構造通常在創建一個可復用組件指令的時候使用。

Scope繼承通常是垂直的,並且你通常不需要知道它的發生,直到你嘗試在子scope中使用2-way數據綁定到一個在父scope中定義的原始類型。scope不起作用的原因,很多是由於在它的父類中有同名的屬性。AngularJS不會這么做,這是由JavaScript原型繼承自己做的。新的AngularJS開發者經常不了解的是,ng-repeat、ng-switch、ng-view、ng-include都會創建一個新的子scope,所以問題經常在這些指令中出現。

在你的model中,帶有「.」將會確認原型繼承在起作用。所以使用<input type="text" ng-model="someObj.prop1"><input type="text" ng-model="prop1">更好。

如果你真的想要(或需要)使用一個原始的方式,有兩項工作:

  • 在子scope中,使用$parent.parentScopeProperty。這將阻止子scope創建它自己的屬性。
  • 在父scope上創建一個方法,並且從子scope中調用它,傳遞原始值到父scope中(並不總是起作用)。

相關細節


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM