我有这个简单的路由器:
.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
正在获得已解析的值。应用程序崩溃了,而不是其他操作(不是我知道的)。
为什么这件事会破碎?
谢谢!
答案 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>
感谢您的帮助!