Angular JS - 控制器之间可以访问该指令

时间:2017-04-28 02:56:57

标签: javascript angularjs angularjs-directive angularjs-controller

我是Angular的新手,只是想知道如何在控制器之间访问我的指令,因为我只将它注册到子控制器,而不是主应用控制器。以下是我的代码。

app.module.js

angular.module('adminPage', ['ngRoute', 'ui.bootstrap', 'ngAnimate', 'login', 'registerEmployee', 'listEmployee'])
    .controller('adminPageCtrl', ['$scope', '$location' , funcAdminPageCtrl]);
angular.module('login',[]);
angular.module('registerEmployee', []);
angular.module('listEmployee', []);

如上所述,我adminPage充当主控制器,其他充当子控制器。

registerEmployeeController.js

angular.module('registerEmployee')
    .controller('registerEmployeeCtrl', ['$scope', funcRegisterEmployeeCtrl
    ])
    .directive("compareTo", ['$timeout', funcCompareTo]);

如上所示,我将compareTo指令注册到registerEmployee子控制器。

我想在listEmployeeController.js的{​​{1}}(弹出窗口)中使用相同的指令,所以我添加了相同的指令。当我测试它时,我得到的错误是ModalInstanceCtrl。代码如下。

Error: [$compile:multidir] Multiple directives [compareTo, compareTo] asking for new/isolated scope on:

之后我尝试从angular.module('listEmployee') .controller('listEmployeeCtrl', ['$scope', '$uibModal', '$log', '$document', funcListEmployeeCtrl ]) .controller('ModalInstanceCtrl', funcModalInstanceCtrl) .directive("compareTo", ['$timeout', funcCompareTo]); 删除compareTo指令,错误消失了。然后,它按预期工作(listEmployeeController.js指令可用于compareTo的模态),即使它没有注册到其控制器。

我的 funcCompareTo 如下所示。

listEmployeeView.html

由于我只在function funcCompareTo($timeout) { return { require: "?ngModel", scope: { otherModelValue: "=compareTo" }, link: function(scope, element, attributes, ngModel) { $timeout(function(){ if (!ngModel) { console.log("can't get ngModel."); return; } ngModel.$validators.compareTo = function(modelValue) { console.log(modelValue+"; "+scope.otherModelValue); if (modelValue == '') return true; return modelValue == scope.otherModelValue; }; scope.$watch("otherModelValue", function() { ngModel.$validate(); }); }, 0); } }; } 注册了指令,为什么registerEmployeeCtrl中存在该指令?

0 个答案:

没有答案