Можно ли передать параметр директиве и установить это значение в качестве области действия?AngularJS создать область действия директивы с значением переменной родительского контроллера
Пример:
angular
.module('app', [])
.controller('CTRL', function($scope) {
$scope.some_value = {
instance1: {
key1: 'value11',
key2: 'value12'
},
instance2: {
key1: 'value21',
key2: 'value22'
},
};
})
.directive('uiClock', function() {
return {
restrict: 'E',
scope: {},
template: template,
link: function(scope, element, attr) {
// scope should now contain either (first directive)
// {
// key1: 'value11',
// key2: 'value12'
// }
// or (second directive)
// {
// key1: 'value21',
// key2: 'value22'
// }
console.log(scope);
}
};
});
<div ng-controller="Ctrl">
<ui-clock ng-bind="some_value.instance1"></ui-clock>
<ui-clock ng-bind="some_value.instance2"></ui-clock>
</div>
Поэтому я хочу, чтобы это сделать, у меня есть несколько экземпляров одного и того же директивы и каждый из них должен изменить значение, переданное в качестве параметра из родительской области.
Любые мысли?
И вы хотите изменения внутри этих директив должны быть видимыми в родительском пространстве? Я хотел бы увидеть код шаблона для этих директив, так как я не могу себе представить, зачем вам это нужно. Было бы полезно узнать, какую двустороннюю привязку данных вы ожидаете от решения. –
Изменения этих директив видны в коде шаблона директивы. В контроллере я загружаю и сохраняю их при загрузке и выходе приложения. –
Это не помогает мне понять ваше ожидаемое поведение. Если изменения должны быть видны только внутри директив, то вторая версия ответа Пауля Бутса может быть уместна, даже если двусторонняя привязка данных, которую он использует, в этом случае является устаревшей. Если вам нужно, чтобы изменения отображались вне области действия директивы, вы должны добавить наблюдателей к его решению. –