指令处理来自模型的事件



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

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

从一个模型发出的事件会被冒泡到指令链接范围吗?

Angular事件是由作用域触发和接收的。所以,你需要一个$scope对象来广播一个事件,你需要一个scope对象来监听一个事件。如果你说的"model"指的是angular服务,那么你可以注入$rootScope并从那里$broadcast事件,就像这样…

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) {
               ...
            }
        }
    };
});

最新更新