私は、ajaxサーバコールで現在のユーザを解決し、このオブジェクトを子の状態に渡すという、ただ1つのジョブしか持たない抽象的な親状態を作成したいと考えています。問題は、子の状態が決して読み込まれないことです。このplunkerを見てください。この例ではExampleAngular ui-routerは継承を解決します
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のドキュメントに書かれているようなことをすべてやったが、これはうまくいくはずだ。