У меня есть ng-repeat, создающий несколько директив, каждый с изолированной областью. Я хочу иметь возможность вызывать одну функцию, которая вызывает функцию для каждой директивы, поэтому она сбрасывает переменную в каждой изолированной области. Я все равно не могу это сделать? Я понимаю, что это может быть не самая лучшая практика, но мне просто нужно решение на данный момент.Обновленная изолированная область действия по нескольким директивам
ответ
Способ сделать это, чтобы обеспечить обратную связь с директивой (то есть scope: { xxx: '&' }
), которая будет выполнять некоторые функции. Может быть:
<the-directive callback="ctrl.command(action, argument)" />
И директива выглядит следующим образом:
app.directive('theDirective', function() {
return {
...
scope: {
callback: '&',
...
},
controller: ['$scope', function($scope) {
this.resetTheVariable = function() {
// DO WHAT YOU WANT HERE
};
$scope.callback({ action: 'register', argument: this });
$scope.$on('$destroy', function() {
scope.callback({ action: 'deregister', argument: this });
});
}]
};
})
Теперь контроллер вызова этой директивы будет выглядеть так:
function TheController() {
var registeredDirectives = [];
this.command = function(action, argument) {
switch(action) {
case 'register':
registeredDirectives.push(argument);
break;
case 'deregister':
var index = registeredDirectives.indexOf(argument);
if(index >= 0) {
registeredDirectives.splice(index, 1);
}
break;
}
};
this.resetAll = function() {
registeredDirectives.forEach(function(registeredDirectiveController) {
registeredDirectiveController.resetTheVariable();
});
};
}
Другой вариант, который я использую в подобной вене система угловых событий.
Я создаю панель виджетов. Мой виджет - это директива, содержащаяся в файле ng-repeat
.
Я испускаю события в своем контроллере $scope.$broadcast
, а затем послушайте мою директиву с $scope.$on
. Я использую $index
ng-repeat
, чтобы иметь возможность настраивать конкретные виджеты.
быстрый пример скрипку: http://jsfiddle.net/adyjm9g4/
EDIT: Забыл упомянуть, где вы также можете передать данные: http://jsfiddle.net/adyjm9g4/1/
приятное элегантное решение, спасибо! :) – colouredFunk
- 1. изолированная область действия = = влияет на область родителя
- 2. "=?" В Угловой Директиве Изолированная область
- 3. Угловая изолированная область действия в директиве относится к родительской области
- 4. Изолированная область: значение не обновляется
- 5. Angularjs директива изолированная область свойства undefined
- 6. Условия гонки по директивам
- 7. Угловая директива изолированная область не обновляется
- 8. Angularjs - Директива Двусторонняя привязка Изолированная область Проблема
- 9. AngularJS - обновленная изолированная переменная области видимости от функции связи
- 10. Простая изолированная область Функция Параметры, не называемые
- 11. Углеродная директива Изолированная область измерения дефекта прошла
- 12. AngularJS Изолированная область и привязка контроллера
- 13. Достигнуто 10 $ digest() итераций. Aborting! - изолированная область
- 14. Угловая изолированная область для многосегментного списка
- 15. Изолированная область на кнопке не работает
- 16. Ошибка проверки формы Angularjs по директивам
- 17. Какова область действия @EnableTransactionManagement?
- 18. применение областей по угловым директивам и функции вызывающего объекта
- 19. Когда изолированная область привязана к родительской области в AngularJs?
- 20. Директива AngularJS Изолированная область внутри вложенного ng-transclude
- 21. Двусторонняя переплетная, $ watch, изолированная область не работает вместе
- 22. Angularjs изолированная область для директив без собственного шаблона
- 23. Действия по нескольким спискам в одной строке
- 24. Как регистрировать действия по нескольким запросам
- 25. область действия по-разному в угловом
- 26. Область действия Activerecord по значению ассоциации
- 27. QML: область действия id
- 28. Изолированная Scope не работает
- 29. Рекомендации по угловым директивам модульного тестирования
- 30. Область действия Javascript Dojo
разместить свой код и показать нам, что все, что вы пробовали. –