我對同一個標記<settings>
和<modal>
有兩個指令。 settings
提供了一個模板,而modal
創建一個孤立的範圍:AngularJS:跨指令不共享的範圍
var app = angular.module('app', []);
app.directive('settings', function() {
return {
restrict: 'E',
template: '<div>SETTINGS</div>',
link: function (scope) {
console.log('settings', scope.$id);
}
};
});
app.directive('modal', function() {
return {
restrict: 'A',
scope: {},
link: function (scope) {
console.log('modal', scope.$id);
}
};
});
然而,他們最終不會共享相同的範圍,如圖中的日誌:
<settings modal="settings"></settings>
settings 002
modal 003
爲什麼就是它 ?
OK,但我可以以某種方式獲取2個指令共享相同的(隔離)範圍是什麼?他們不能同時創建一個孤立的範圍。 –
您可以將非隔離指令嵌入到單獨的指令中,或者創建一個獨立的包裝指令,然後保持它們都不是孤立的......我認爲將非隔離指令混合起來不是一個好主意作爲一個元素 – doodeec
我試圖避免這種情況,可能是通過強制隔離指令來跨越非隔離指令,但我想我沒有選擇...... –