如何将服务注入指令?

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 服务。