获取解析值的未知提供程序错误
Getting Unknown provider error for resolved value
我有这个简单的路由器:
.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>
感谢您的帮助!
我有这个简单的路由器:
.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>
感谢您的帮助!