在我的应用程序中,用户可以从下拉列表中选择主题并创建有关该主题的多个注释。每个注释都是一个指令,它是主题范围的子节点,每个注释都有一个隔离范围。此时,用户可以手动关闭便笺,脏便检查它并允许用户在从视图中删除便笺之前保存或取消等。但是,我想要达到的目的是打电话给关闭注意事项。在下拉菜单中更改主题字段时,每个音符上的方法。
我已经开始使用主题下拉菜单上的指令实现此功能,该菜单会在更改时记录事件:
(function(){
'use strict';
var changeSubjectSelect = function(){
function linkFn(scope, element, attrs){
function onSubjectChange(e){
scope.$broadcast('saveAllNotes', {data: 'some data'});
scope.$apply(attrs.changeSubjectSelect);
}
element.on('change', onSubjectChange)
}
return{
restrict: 'A',
link: linkFn
}
}
angular.module('ganeshaApp')
.directive('changeSubjectSelect', changeSubjectSelect)
})();
然后我在每个音符指令中选择事件:
//in the noteDirective controller
$scope.$on('saveAllNotes', function(event, data){
console.log(e);
closeNote();
})
function closeNote(){
//dirty check the note, call modal to save or cancel, close note
}
到目前为止,事件正在向打开的每个隔离子注释指令广播,但函数closeNote()仅由列表中的最后一个指令调用。理想情况下,我希望按顺序在每个指令上调用事件,例如, '注意X有变化,你想保存',然后'注意Y有变化,你想要保存'等等我确实对这些不太熟悉方法......如果有人对如何实现这种用例有一些提示或建议,那就太棒了。