AngularJS$rootScope$发射而不发射该方法

AngularJS $rootScope.$emit not Firing the Method

本文关键字:发射 方法 AngularJS rootScope      更新时间:2023-09-26

我想使用服务根据需求激发指令。下面是指令代码。

var app = angular.module('MyModule').service('DOMService', ['$rootScope', function ($rootScope) {
    this.Manipulate = function () {
        $rootScope.$emit('manipulateDOM');
    };
}]).directive('domDirective', ['$rootScope', function ($rootScope) {
    return {
        restrict: 'EA',
        replace: 'false',
        scope: true,
        link: function (scope, elm, attrs) {
            $rootScope.$on("manipulateDOM", function () {
                alert("Entered......");
                //  element.find('#DirectiveLable').css('background-color', 'red')
                // element.find('#DirectiveLable').css('height', '100')
            });
        },
    };
}]);

下方的我的HTML赞

<div id="example">
        <div id="grid"></div>
        <dom-directive>
            <label id="DirectiveLable">Click Here</label>
        </dom-directive>
    </div>

我在我的角度控制器内呼叫如下服务

angular.module('MyModule').controller('CitizenRelationAccordionController', ['$scope', '$q', '$attrs', 'DOMService',
    function ($scope, $q, $attrs, DOMService) {
       DOMService.Manipulate();
    }
 ]);

问题是,即使DOMService正在启动,它也没有调用alert写入的指令方法

我认为您错过了模块声明中的[]:这是您编写的一个工作示例。

希望这能有所帮助,

Dario