我正在编写一个Angular单页面应用程序,其中有许多"页面"通过公共视图和公共控制器(使用ui-router
)呈现。要使用的数据存储在服务中的分层对象中,并使用URL组件进行检索。也就是说,如果我有网址#/getstarted/get
,则会从myService.getContents().getstarted.get
读取内容。
这很好用,但有一个例外:当我想导航到另一个页面时,没有任何反应。为了进入另一个页面,我必须访问由另一个控制器控制的页面。
显然,当我点击具有相同控制器的状态的链接时,控制器不会被再次解析(可以从" console.log调试中看到),因此从中检索数据的参数是没精神。
是否有办法(在回调中,在module.config中或在某些ui-sref
中)使控制器数据无效?
答案 0 :(得分:0)
如果你有一个plunkr,会更容易测试,但尝试一个变体:
$stateProvider.state('somewhere', {
url:'/somewhere',
cache:false,
templateUrl:function(params) {
return 'some/calculated/path/view.html'
},
controllerProvider:[function() {
return 'HomeController';
}]
});
每次都应该调用{p> templateUrl
和controllerProvider
......
答案 1 :(得分:0)
进一步的研究表明,实际上必须更新ui-sref
部分。具体地说:添加ui-sref-opts="{reload: true}"
会导致重新解释控制器数据。因此,我必须将此指令添加到模板中的所有ui-sref链接,以激活我需要的行为。
这在http://angular-ui.github.io/ui-router/site/#/api/ui.router.state.directive:ui-sref中有记载,但必须提到的是,没有关于如何格式化对象本身的示例。