ui-router和angularjs中的并行状态 - 防止重新加载
我在ui-router中有一个'并行状态'设置,允许url和状态确定DOM的两个不同部分(左侧和右侧)。右边总是'酒吧',左边是巴兹和蝙蝠。有一个抽象的父状态,它决定了通过project_id显示哪个项目。更改父状态/ project_id将更改baz,bat和bar的内容。代码在下面,并且工作。ui-router和angularjs中的并行状态 - 防止重新加载
问题是,当状态从project.baz - > project.bat转换时,'bar'视图重新初始化(例如指令重新运行链接函数),这会导致一些丑陋。
问题:当状态从project.baz - > project.bat改变时,是否有办法阻止'bar'视图被重新初始化?当然,它应该在它的父状态(即project_id)改变时重新初始化。
感谢
$stateProvider
.state('project', {
abstract: true,
url: "/qux/:project_id",
views: {
"left": {
templateUrl: 'foo.html',
controller: 'FooController'
},
"right": {
templateUrl: 'bar.html',
controller: 'BarController'
}
}
})
.state('project.baz', {
url: "/baz",
views: {
"": {
templateUrl: 'baz.html',
controller: 'BazController'
},
"right": {
templateUrl: 'bar.html',
controller: 'BarController',
}
}
})
.state('project.bat', {
url: '/bat',
views: {
"": {
templateUrl: 'bat.html',
controller: 'BatController'
},
"right": {
templateUrl: 'bar.html',
controller: 'BarController'
}
}
})
我无法重现您所描述的问题:http://plnkr.co/edit/krpCu6HokH365ukisPHu?p=preview
这可能是不必要的对孩子的看法指定的"right"
看法,如果它是不超过一个不同父母国家的意见:
$stateProvider
.state('project', {
abstract: true,
url: "/qux/:project_id",
views: {
"left": {
templateUrl: 'foo.html',
controller: 'FooController'
},
"right": {
templateUrl: 'bar.html',
controller: 'BarController'
}
}
})
.state('project.baz', {
url: "/baz",
templateUrl: 'baz.html',
controller: 'BazController'
})
.state('project.bat', {
url: '/bat',
templateUrl: 'bat.html',
controller: 'BatController'
});
但是,即使代码逐字从您的问题复制,我是una重现问题。
感谢potatosalad。我会用可重现的问题制作一个plinkr,然后在这里更新。 – tom 2014-08-28 22:25:13
看看ui-router-extras提供的粘性状态(并行状态)和深度状态重定向功能http://christopherthielen.github.io/ui-router-extras/#/home – Martin 2014-08-28 19:57:51
谢谢。看起来像粘性状态是我需要的。当我下一次检修代码时,我会给出一个结论。现在,为了稳定的缘故,我不会。你知道目前ui-router-extras有多稳定吗? – tom 2014-08-28 22:29:44