从不同的模块访问指令
Accessing directive from a different module
我有两个不同的模块,第一个包含控制器第二个指令。
基本上我希望 directive
在我的 view
中呈现。
但是由于directive
和controller
的modules
是不同的,所以它给出了错误。
如果我给出相同的 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
<div ng-controller="SlambookExt">
<app-version>1</app-version>
</div>
实例化slamModuleCtrl
时,需要指定genericModule
作为依赖。
或者使用将这两个模块加载为依赖项的父模块,并将该父模块用作您的 ng-app
。
angular.module('parentModule',['slamModuleCtrl','genericModue'])
这只是一个看似合理的解决方案,因为您的两个模块在我看来都很合适。所以我猜版本没有显示是因为模块还没有加载
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>
代码片段显示了另一个模块指令并使用了来自另一个模块控制器的绑定
我有两个不同的模块,第一个包含控制器第二个指令。
基本上我希望 directive
在我的 view
中呈现。
但是由于directive
和controller
的modules
是不同的,所以它给出了错误。
如果我给出相同的 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
<div ng-controller="SlambookExt">
<app-version>1</app-version>
</div>
实例化slamModuleCtrl
时,需要指定genericModule
作为依赖。
或者使用将这两个模块加载为依赖项的父模块,并将该父模块用作您的 ng-app
。
angular.module('parentModule',['slamModuleCtrl','genericModue'])
这只是一个看似合理的解决方案,因为您的两个模块在我看来都很合适。所以我猜版本没有显示是因为模块还没有加载
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>
代码片段显示了另一个模块指令并使用了来自另一个模块控制器的绑定