我有3种嵌套的状态:角路由和国家处理问题
$stateProvider
.state('A', {
url: '/a',
templateProvider: function ($templateCache) {
return $templateCache.get('pages/a.html');
},
controller: 'aController'
})
.state('A.B', {
url: '/b',
templateProvider: function ($templateCache) {
return $templateCache.get('pages/b.html');
}
controller: 'bController'
})
.state('A.B.C', {
url: '/c',
templateProvider: function ($templateCache) {
return $templateCache.get('pages/c.html');
},
controller: 'cController'
})
比方说,一个是应用程序的初始状态。现在,当在状态A中点击状态B的链接时,调用$ state.go('。B',...),状态B必须从A获取参数,因此它可以使用该参数调用某个服务并呈现数据。
同样,当状态C点击一个链接状态B,C必须得到B组参数,因此它可以做正确的工作和显示数据。
第一个问题:
什么是要通过这些参数上下行的最佳方式?嵌套控制器是否错误,以便父范围在子范围中可见?还是应该将它们作为参数传递?
第二个问题(一种依赖于回答第一个):
应如何HTML模板来构造(尤其是关于对“用户界面视图”指令),浏览器,所以当返回按钮在来自B之后的状态C上被点击,模板B的控制器不被触发,以便状态B显示与在进入状态C之前相同的数据而不重新加载。
如果用户已经做出了如下转变:未来将其从A.
第三个问题后,这同样适用于点击回到状态B A-> B-> C,然后导航至一些不相关的状态D(例如,通过点击主菜单上的链接),然后在状态D中按下后退按钮,由于没有输入参数,我该如何防止控制器C崩溃?
四问题(有关第三):
前提:唯一的“正确”的方式来获得状态B是通过点击状态A,同样获得到C用户必须通过先A-> B。
那么,如何做我处理当用户手动输入,例如URL B,从一些零散状态d?再次,因为B没有输入参数,所有的东西都会崩溃。
谢谢。
感谢您的洞察力,其中一些可能会有所帮助。 – 2015-02-12 08:16:14
再次问候。在玩了一段时间之后,我有一个后续问题:如果我不能/不想使用url params,但是状态定义的params属性呢?在这种情况下,我会在后退按钮上丢失参数。我可以实现某种缓存特定状态的参数,我可能会这样做,但如果你知道更好的方法,请分享。谢谢。 – 2015-02-13 11:18:01
基本上,您尝试记住页面的状态,并在导航到页面时通过其他页面或直接通过地址栏记住该状态。回顾一个页面之间导航的状态很容易,因为您可以输入一些信息来构造状态。但是,如果您不使用URL参数,那么当用户通过地址栏导航到页面时,如何输入构建状态? – restassured 2015-02-13 15:18:21