2
我想創建一個只有一個作業的抽象父狀態:通過ajax服務器調用解析當前用戶,然後將此對象傳遞給子狀態。問題是子狀態永遠不會被加載。請看看這個plunker:ExampleAngular UI路由器解析繼承
一個state
angular.module('test', ['ui.router'])
.config(function($stateProvider, $urlRouterProvider){
// Parent route
$stateProvider.state('main', {
abstract:true,
resolve: {
user: function(UserService){
return UserService.getUser();
}
}
});
// Child route
$stateProvider.state('home', {
parent: 'main',
url: '/',
controller: 'HomeController',
controllerAs: '$ctrl',
template: '<h1>{{$ctrl.user.name}}</h1>'
});
$urlRouterProvider.otherwise('/');
});
一個factory
angular.module('test').factory('UserService', function($q){
function getUser() {
var deferred = $q.defer();
// Immediately resolve it
deferred.resolve({
name: 'Anonymous'
});
return deferred.promise;
}
return {
getUser: getUser
};
});
一個controller
angular.module('test').controller('HomeController', function(user){
this.user = user;
});
在這個例子中,home
國家將NEV呃顯示模板,我不明白爲什麼。如果我刪除了parent: 'main'
行,那麼它將顯示該模板,但當然,我得到一個錯誤,因爲它找不到HomeController
中的user
依賴項。
我錯過了什麼?我做了像ui-router的文檔中描述的一切,我認爲這應該起作用。