从其他模块访问指令

时间:2016-01-04 20:31:53

标签: angularjs dependency-injection angular-directive angular-controller

我有两个不同的模块,第一个包含控制器第二个指令。

基本上我希望在directive中呈现view。 但由于modulesdirective的{​​{1}}不同,因此会给出错误。

如果我给同一个controller,那么我想要一个为所有控制器提供服务的通用模块来解决我的问题。

module

controller

angular.module('SlamModuleCtrl') .controller('SlambookExt',['$scope','$route','SlambookCollection', function($scope,$route) { console.log("slam controller") }]);

Directive

angular.module('Genericmodule') .directive('appVersion', ['version', function (version) { return { restrict: 'E', template: '<h1>version1</h1>' } }])

View

2 个答案:

答案 0 :(得分:4)

在实例化$('#uSPStyle > li:eq(' + vFirst + ') ul li').length; 时,您需要将slamModuleCtrl指定为依赖项。

或者使用父模块将这两个模块作为依赖项加载,并将该父模块用作genericModule

ng-app

这只是一个合理的解决方案,因为您的模块对我来说都是正确的。所以我猜测版本没有显示,因为模块还没有加载

答案 1 :(得分:1)

Chanthu是正确的,您需要指定一个父模块,该模块依赖于您的其他模块,但您也为其他模块传递了一系列依赖项,在这种情况下它们没有任何模块。

声明你的模块并将它们添加到父模块中,如此...

var controllerModule = angular.module('controllerModule', []);

var directiveModule = angular.module('directiveModule', []);


controllerModule.controller('mainController', function($scope) {
  $scope.hello = 'Hello';
})


directiveModule.directive('myDirective', function() {
  return {
    template: '{{hello}}'
  };
});

angular.module('app', ['controllerModule', 'directiveModule']);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.5/angular.min.js"></script>

<body ng-app="app" ng-controller="mainController">

  <my-directive></my-directive>

</body>

代码段显示另一个模块指令,并使用另一个模块控制器的绑定