如何添加自定义指令命名空间?

时间:2014-11-09 17:48:13

标签: angularjs angularjs-directive

我有几种类型的用户,每个用户都有自己的密码更改窗口:

(function () {
    var app = angular.module('Directives.UserType1.Modals.ChangePassword', [
        'Controllers.UserType1.Modals.ChangePassword'
    ]);

    app.directive('changePasswordModal', function () {
        return {
            restrict: 'E',
            scope: {},
            templateUrl: '/UserType1/Modals/ChangePassword.tpl',
            controller: "Controllers.UserType1.Modals.ChangePassword"
        };
    });

})();

(function () {
    var app = angular.module('Directives.UserType2.Modals.ChangePassword', [
        'Controllers.UserType2.Modals.ChangePassword'
    ]);

    app.directive('changePasswordModal', function () {
        return {
            restrict: 'E',
            scope: {},
            templateUrl: '/UserType2/Modals/ChangePassword.tpl',
            controller: "Controllers.UserType2.Modals.ChangePassword"
        };
    });

})();

而angularjs告诉我,他并不了解使用哪一个。 我想用与控制器相同的技巧(点符号),但我不能。

请帮助我理解如何避免"多指令资源争用"问题:

  

多个指令[changePasswordModal,changePasswordModal]询问   用于模板:

P.S。对不起我的英语不好:C

1 个答案:

答案 0 :(得分:0)

指令名称不能带点,并且在单个应用程序模块下不能具有相同的名称。

您可以在不同的应用程序模块下具有相同的指令名称,但是您需要显式设置这些指令的优先级,并且当在模板中按优先级顺序(降序)使用该指令时,将执行所有指令。

在您的情况下,您可以将指令重命名为以下内​​容。

userType1ChangePasswordModal

userType2ChangePasswordModal

希望这有帮助。