获取已解析值的未知提供程序错误

时间:2015-02-16 22:35:01

标签: javascript angularjs angularjs-routing

我有这个简单的路由器:

    .when('/login/:uuid', {
            templateUrl: 'views/login.html',
            controller: 'RoomLoginCtrl',
            resolve: {
              roomName: function($route, ServerService) {
                var uuid = $route.current.params.uuid;
                return ServerService.getRoomName(uuid); //returns promise
              }
            }
          })
....

这是控制器:

(function(angular) {
  angular.module('app')
    .controller('RoomLoginCtrl', RoomLoginCtrl);

  function RoomLoginCtrl($location, TransferService, roomName) {
    var vm  = this;
    vm.$location = $location;
    vm.TransferService = TransferService;
    vm.roomName = roomName;
    vm.userName = "";
  }
})(angular);

我的问题是我收到以下错误:

Error: [$injector:unpr] Unknown provider: roomNameProvider <- roomName <- RoomLoginCtrl

奇怪的是,当我调试时,我可以看到roomName正在获得已解析的值。应用程序崩溃了,而不是其他操作(不是我知道的)。

为什么这件事会破碎?

谢谢!

1 个答案:

答案 0 :(得分:0)

通过混合@ micha和@New Dev的评论,我通过以下方式解决了这个问题:

添加controllerAs: 'vm'

.when('/login/:uuid', {
            templateUrl: 'views/login.html',
            controller: 'RoomLoginCtrl',
            controllerAs: 'vm'
            resolve: {
              roomName: function($route, ServerService) {
                var uuid = $route.current.params.uuid;
                return ServerService.getRoomName(uuid); //returns promise
              }
            }
})

还从ng-controller="RoomLoginCtrl as vm"标记中删除了temolateUrl
改变了这个:

<div ng-controller="RoomLoginCtrl as vm">

对此:

<div>

感谢您的帮助!