如何将服务注入指令?
How to inject services into a directive?
我尝试在指令中使用 Angular boostrap-ui 但它不起作用,所以我决定使用将使用 Angular bootstarp-ui ,并将其注入指令。
我不断收到此错误:
Unknown provider: ui.bootstrapProvider <- ui.bootstrap <- modal <- monitorCardDirective
Angular 应用程序:
'use strict';
var app = angular.module('app', [ 'ui.bootstrap' ,'restangular']);
app.controller('nav', function($scope, $uibModal, $filter, Restangular) {
$scope.search = false;
});
app.directive('monitorCard',['modal',function(modal) {
return {
link: function(scope, element, attr) {
element.bind('click',function(){
modal.open({
templateUrl: 'monitoController.html',
controller: 'monitorController'
});
});
},
scope:{
monitorCard: '='
}
};
}]);
app.factory('modal',['ui.bootstrap',function($uibModal){
var modalInstance = $uibModal.open({
templateUrl: 'monitoController.html',
controller: 'monitorController'
});
return modalInstance;
}]);
在您的 modal
工厂的定义中,替换:
app.factory('modal', ['ui.bootstrap', function($uibModal)
和
app.factory('modal', ['$uibModal', function($uibModal)
作为旁注,请注意此工厂 returns 模态实例。模态实例对象不是模态服务,也没有 open
方法,因此您会得到另一个错误。从您定义的指令来看,您似乎只需要在指令中注入 uibModal
服务。
我尝试在指令中使用 Angular boostrap-ui 但它不起作用,所以我决定使用将使用 Angular bootstarp-ui ,并将其注入指令。 我不断收到此错误:
Unknown provider: ui.bootstrapProvider <- ui.bootstrap <- modal <- monitorCardDirective
Angular 应用程序:
'use strict';
var app = angular.module('app', [ 'ui.bootstrap' ,'restangular']);
app.controller('nav', function($scope, $uibModal, $filter, Restangular) {
$scope.search = false;
});
app.directive('monitorCard',['modal',function(modal) {
return {
link: function(scope, element, attr) {
element.bind('click',function(){
modal.open({
templateUrl: 'monitoController.html',
controller: 'monitorController'
});
});
},
scope:{
monitorCard: '='
}
};
}]);
app.factory('modal',['ui.bootstrap',function($uibModal){
var modalInstance = $uibModal.open({
templateUrl: 'monitoController.html',
controller: 'monitorController'
});
return modalInstance;
}]);
在您的 modal
工厂的定义中,替换:
app.factory('modal', ['ui.bootstrap', function($uibModal)
和
app.factory('modal', ['$uibModal', function($uibModal)
作为旁注,请注意此工厂 returns 模态实例。模态实例对象不是模态服务,也没有 open
方法,因此您会得到另一个错误。从您定义的指令来看,您似乎只需要在指令中注入 uibModal
服务。