在任何状态下解析UI-Router

时间:2016-04-05 10:55:07

标签: javascript angularjs angular-ui-router

是否有办法让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中设置变量吗?

1 个答案:

答案 0 :(得分:1)

我通常使用状态inheritance来执行此操作,这样解析后的属性只需“解析”一次,除非用户从父状态退出。我通常创建一个名为“app”的父抽象状态,并使我的所有状态继承自它,这样如果我需要为我的所有状态引入一个已解析的属性,我只需添加它。

如果无法重命名和更新状态树(可能你定义了几个状态),我会使用angular.extend或jQuery.extend,这样你就可以将你的“always”属性定义为一个单独的对象,按需使用它。