在指令中使用scope: { ... }
引入了一個隔離範圍,該範圍並不從其父範圍原型繼承。但是,我一直用它出於不同的原因:宣佈HTML一種方便的方式與雙向數據綁定屬性:如何獲取指令*中的雙向數據綁定*沒有隔離範圍?
scope: {
attr1: '=',
attr2: '?='
}
爲了得到一個非隔離範圍,你必須使用scope: true
,它不提供宣佈這些屬性的機會。我現在發現自己需要一個非隔離範圍的指令,但是需要雙向綁定。達到此目的的最佳方式是什麼?
例子:我的使用情況是這樣的,在outer-directive
的觀點:
<div ng-repeat="e in element">
<inner-directive two-way-attr="e.value"></inner-directive>
</div>
但inner-directive
相同模塊outer-directive
英寸它不需要用隔離範圍封裝。實際上,我需要爲其他目的使用$scope
繼承,所以隔離範圍不是選項。只是使用HTML屬性來建立這種雙向通信非常方便。
當您使用'scope:true'時,您可以直接訪問'scope',那麼最新的問題是什麼? _scope:true_將創建一個原型繼承父級的子作用域,以便您可以訪問在指令中父級作用域上定義的值。 – Satpal
https://github.com/angular/angular.js/wiki/Understanding-Scopes – Satpal
@Satpal:我意識到這一點,但對於我的目的來說,這是建立溝通的一種相當不雅的方式。事實上,你剛剛分享的鏈接說:「它被認爲是兩個控制器通過$ scope繼承共享信息的糟糕形式」。 ---我將在我的問題中添加一個用例示例。 – mhelvens