为什么在将数据传递给模态控制器时会收到角度模态服务错误?

时间:2015-06-06 01:07:48

标签: angularjs

我正在使用angular-modal-serviceyeoman generated angular application中显示模态。我正在关注文档,但在通过inputs参数传递数据时遇到此错误。

  

错误:[$ injector:unpr]未知提供者:userProvider< - user< -   targetModalCtrl

这是控制器上触发模态的功能

'use strict';

angular.module('webClientApp')
  .controller('LogCreateCtrl', function ($scope, $rootScope, $log, $http, config, ModalService, $route) {

  /*-- OTHER FUNCTIONS --*/     

  // record time in
  $scope.recordTimeIn = function() { 
    // show target modal
    ModalService.showModal({
      templateUrl: "views/targetModal.html",
      controller: "targetModalCtrl",
      inputs: {
        user: $scope.user.id
      }
    }).then(function(modal) {
      modal.element.modal();
      modal.close.then(function(result) {
        $log.debug(result);
      });
    });
  }
});

这是模态控制器:

'use strict';

angular.module('webClientApp')
  .controller('targetModalCtrl', ['$scope', 'user', function($scope, user) {
    $log.debug(user);
}]);

如果我没有使用inputs中的LogCreateCtrl参数并删除user中的targetModalCtrl,则模式显示正常。

2 个答案:

答案 0 :(得分:0)

我不熟悉angular-modal-service,但我发现两个潜在的问题......

  1. 我不确定模态服务是否足够强大以通过数组表示法处理注入(the docs对此不清楚)
  2. 我在控制器的参数中看不到$log
  3. 您可以尝试将控制器更改为以下内容......

    angular.module('webClientApp')
      .controller('targetModalCtrl', function($scope, $log, user) {
        $log.debug(user);
    });
    

答案 1 :(得分:0)

我发现一个案例会导致问题。

在输入中,user的值是$ scope.user.id,现在在控制器中,我无法看到,user.id设置在范围内的任何位置,这将意味着分配给用户的未定义值。

模态服务删除未定义的值,因此无法注入用户。