使用范围。$从父级广播到许多孤立的子范围

时间:2016-06-17 15:05:21

标签: javascript angularjs angularjs-directive javascript-events broadcast

在我的应用程序中,用户可以从下拉列表中选择主题并创建有关该主题的多个注释。每个注释都是一个指令,它是主题范围的子节点,每个注释都有一个隔离范围。此时,用户可以手动关闭便笺,脏便检查它并允许用户在从视图中删除便笺之前保存或取消等。但是,我想要达到的目的是打电话给关闭注意事项。在下拉菜单中更改主题字段时,每个音符上的方法。

我已经开始使用主题下拉菜单上的指令实现此功能,该菜单会在更改时记录事件:

(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有变化,你想要保存'等等我确实对这些不太熟悉方法......如果有人对如何实现这种用例有一些提示或建议,那就太棒了。

0 个答案:

没有答案