繁体   English   中英

AngularJS $ rootScope。$ emit不触发该方法

[英]AngularJS $rootScope.$emit not Firing the Method

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

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 Controller中像下面这样调用服务

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

问题是,即使DOMService正在触发,也没有在警报已编写的地方调用指令方法

我认为您错过了模块声明中的[]是您编写的一个有效示例。

希望这会有所帮助,

达里奥

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM