我想在指令中訪問一個變量,在這種情況下map不需要預先定義,就像將它設置爲directrive map =「someValue」的屬性一樣。我也不想使用範圍。$ apply,因爲我實際上只想在指令的隔離範圍內使用變量。這甚至有可能嗎? 這裏最好的做法是什麼?基本上我的指令需要做到這兩點。訪問父範圍,並有我自己的範圍,我可以建立模板。Angular JS:如何在指令本地範圍上設置屬性,我可以在模板中使用?
謝謝大家。
這裏我的JS代碼:
.directive('myFilter', function() {
return {
restrict: 'E',
scope: {
source: '=source',
key: '=key',
},
link: function(scope, element, attrs) {
scope.$on('dataLoaded', function(e) {
scope.map = {};
angular.forEach(scope.source, function(paramObj) {
if (!scope.map[paramObj[scope.key]]) {
var newEntry = {
value: paramObj[scope.key],
isChecked: false
}
scope.map[paramObj[scope.key]] = newEntry;
}
});
});
}
}
});
和我的html:
<my-filter source="metaPara.filteredParameters" key="'value'">
<table class="table table-borered">
<tr data-ng-repeat="item in map">
<td>{{item.value}}</td>
</tr>
</table>
</my-filter>
如果使用=鍵或什麼的,它的雙向綁定到你的控制器範圍的變量。如果您使用&鍵,則不會。那是你需要做的嗎? –
而不是'鏈接'嘗試給指令一個控制器;那麼你應該可以在控制器中創建一個$ scope變量,該變量可用於該模板,但不會暴露給使用該指令的人(我認爲) – JeffryHouser