模型中的指令处理事件

时间:2014-03-12 22:20:02

标签: angularjs angularjs-directive angularjs-scope

我有一个CurrentUser模型类,当用户未经过身份验证时,我想抛出一个'NOT_AUTHENTICATED'事件。

在某些页面上,我想使用一个指令来处理这个事件并显示一个模态。

从模型中发出的事件是否会冒泡到指令链接范围?

1 个答案:

答案 0 :(得分:1)

角度事件由范围触发并由范围接收。因此,您需要一个$ scope对象来广播一个事件,并且您需要一个范围对象来监听事件。如果通过" model"你的意思是一个角度服务,然后你可以像这样注入$ rootScope和$广播事件......

myApp.factory('theModel', function($rootScope) {
    $rootScope.$broadcast('NOT_AUTHENTICATED');
});

该事件将在范围链中消失,并且可以通过链接函数中的指令范围听到。

myApp.directive('theDirective', function () {
    return {
        ...
        link:function(scope, element, attrs) {
            scope.$on('NOT_AUTHENTICATED', function (event) {
               ...
            }

        }

    };
});