是否有办法让stateprovider
ui-route
AngularJS
resolve
执行$stateProvider
.state('signin', {
url: "/signin",
templateUrl: 'app/modules/signin/signin.html',
controller: 'signinController',
resolve: {
reset: function (Master, Storage) {
Master.reset();
Storage.set('preventSigninLeave', true);
}
}
})
.state('menu', {
url: "/menu",
templateUrl: 'app/modules/menu/menu.html',
controller: 'menuController',
resolve: {
config: function (Config) {
return Config.get()
.then(function(response){
return response;
})
.catch(function(error){
console.error(error);
return undefined;
});
},
reset: function (Master) {
Master.reset();
}
}
})
.state('view', {
url: '/view/:view',
templateUrl: 'app/view/view.html',
controller: 'viewController',
resolve: {
config: function (Config) {
return Config.get()
.then(function(response){
return response;
})
.catch(function(error){
console.error(error);
return undefined;
});
}
}
})
.always({
resolve: {
message: function () {
return 'hey Bub';
}
}
});
,无论何时有任何路线被击中。
我正在思考类似的事情:
state
或者我必须在每个被调用的BusLine
中设置变量吗?
答案 0 :(得分:1)
我通常使用状态inheritance来执行此操作,这样解析后的属性只需“解析”一次,除非用户从父状态退出。我通常创建一个名为“app”的父抽象状态,并使我的所有状态继承自它,这样如果我需要为我的所有状态引入一个已解析的属性,我只需添加它。
如果无法重命名和更新状态树(可能你定义了几个状态),我会使用angular.extend或jQuery.extend,这样你就可以将你的“always”属性定义为一个单独的对象,按需使用它。