Я установил plunker, чтобы продемонстрировать проблему. Щелчок кнопки «Боб» не работает. Я ожидал, что дочерние элементы элемента директивы будут иметь одинаковую изолированную область. Нужно ли переместить дочерние элементы в свойство шаблона директивы?AngularJS: ng-click дочернего элемента директивы не работает
ответ
Я бы определил какой-либо объект pass
. Настройка pass
методом setDirectiveTitle
и название:
Демо Plunker
JS
angular.module("myApp", [])
.directive("myScopedDirective", function() {
return {
scope: {
pass: '=',
preffix: "@msdTitle"
},
link: function($scope, $element, $attributes) {
$scope.pass.setDirectiveTitle = function(title) {
$scope.pass.title = $scope.preffix + title;
}
}
};
})
.controller("AppController", ["$scope", function($scope) {
$scope.passVal = {};
$scope.setAppTitle = function(title) {
$scope.passVal.title = title;
};
}]);
HTML
<div ng-controller="AppController">
<h2>{{title}}</h2>
<button ng-click="setAppTitle('App 2.0')">Upgrade Me!</button>
<div my-scoped-directive pass="passVal" msd-title="I'm a directive inside the app: {{passVal.title}}">
<h2>{{passVal.title}}</h2>
<button ng-click="passVal.setDirectiveTitle('Bob')" >Bob It!</button>
</div>
</div>
Я хочу, чтобы setDirectiveTitle() внутри области действия только ... может ли сказать, что не так с оригинальным плункером? –
В порядке, реализация 'setDirectiveTitle' определена в директиве с областью выделения. Все в порядке. Идея заключается в том, когда пользователь нажимает на 'ngClick', мы должны запустить это действие и перейти к директиве. Я не думаю, что вы можете сделать это по-другому. Контроллер не может использовать 'setDirectiveTitle' в любом случае. –
Проблема в том, что она не скомпилирована, вам нужно использовать переход, чтобы скомпилировать html внутри директивы. http://plnkr.co/edit/hGKeTqqU62Na0MWPvBIZ?p=preview
Или вы можете просто передать шаблон: http://plnkr.co/edit/ZYhTdlwSDp0L3jjErOQt?p=preview
Но вы не можете использовать сферу атрибутов связывания в этом случае. Поскольку при втором обновлении родительской области третий клик по дочернему элементу не будет обновляться, как вы ожидали. Вы должны распространять данные по-разному.
- 1. получить значение дочернего элемента директивы
- 2. AngularJS: ClearText не работает в Ионическом ngClick
- 3. ngClick не работает на сНу элемента
- 4. Угловые директивы (ngclick not firing)
- 5. AngularJS - ngClick, пользовательские директивы, и изолированные сферы применения выпуск
- 6. AngularJS директивы данных не работает
- 7. ngClick не работает
- 8. AngularJS динамически добавляет ngclick
- 9. AngularJS: Вложенные директивы - передача данных не работает
- 10. AngularJS: ngClass не обновление на ngClick
- 11. В angularjs ngclick не работает от ответа ajax
- 12. Директива дочернего элемента angularjs DOM не загружается достаточно быстро
- 13. Почему ngClick больше не работает после компиляции?
- 14. AngularJS ngClick стрелять услугу, но не
- 15. angularjs ngclick ясно и поиск
- 16. Как удалить директивы атрибута из директивы элемента в AngularJS?
- 17. AngularJS ngclick Переключатель функции вызова
- 18. AngularJS - Прокрутка элемента зависит от директивы?
- 19. AngularJS - как переопределить директиву ngClick
- 20. Двустороннее связывание не работает Вложенные директивы - AngularJS
- 21. jQuery не работает для директивы AngularJS
- 22. Angularjs set href не работает из директивы
- 23. Кнопка внутри директивы angularjs не работает
- 24. Angularjs: ng-click не работает внутри директивы
- 25. AngularJS - контроллер не работает внутри директивы
- 26. Директивы AngularJS внутри Bootstrap Модально не работает
- 27. AngularJS пользовательские директивы $ часы не работает
- 28. AngularJS пользовательские директивы $ location.path не работает
- 29. Передача значений директивам не работает - AngularJS/директивы
- 30. AngularJS: wait in 'link' директивы не работает
Почему бы вам просто не изменить дочернюю кнопку на кнопку ' –