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

Getting Unknown provider error for resolved value

本文关键字:程序 错误 未知 获取      更新时间:2023-11-27

我有一个简单的路由器:

    .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正在获得解析的值。该应用程序稍后崩溃,没有完成其他操作(据我所知)。

为什么这东西会让人崩溃?

谢谢!

通过混合@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
              }
            }
})

并且还从temolateUrl标签中删除了ng-controller="RoomLoginCtrl as vm"
更改此:

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

对此:

<div>

谢谢你的帮助!