【问题标题】:How to inject services into a directive?如何将服务注入指令?
【发布时间】:2016-02-08 13:41:26
【问题描述】:

我尝试在指令中使用 Angular boostrap-ui 但它不起作用,所以我决定使用将使用 Angular bootstarp-ui 的服务,并将其注入指令中。 我不断收到此错误:

未知提供者:ui.bootstrapProvider

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;
}]);

【问题讨论】:

  • 您是否在 HTML 中包含了必要的
  • 是的,我已经在 html 中包含了必要的文件

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


【解决方案1】:

modal 工厂的定义中,替换:

app.factory('modal', ['ui.bootstrap', function($uibModal)

app.factory('modal', ['$uibModal', function($uibModal)

作为旁注,请注意这个工厂返回一个模态实例。模态实例对象不是模态服务,也没有open 方法,所以你会得到另一个错误。从您定义的指令来看,您似乎只需要在指令中注入uibModal 服务即可。

【讨论】:

    猜你喜欢
    • 2014-02-08
    • 2016-02-12
    • 1970-01-01
    • 1970-01-01
    • 2016-06-30
    • 1970-01-01
    • 1970-01-01
    • 2016-05-28
    • 1970-01-01
    相关资源
    最近更新 更多