我有一个'平行状态'在ui-router中设置,允许url和state确定DOM的两个不同部分(左和右)。权利永远是' bar'左边在baz和bat之间变化。有一个抽象的父状态,它通过project_id确定要显示的项目。更改父状态/ project_id会更改baz,bat和bar的内容。代码如下,并且有效。
问题是当状态从project.baz转换 - > project.bat,' bar' view重新初始化(例如指令重新运行链接函数),这会导致一些丑陋。
问题:有没有办法阻止' bar'当状态从project.baz改变时重新初始化视图 - > project.bat?当然,当它的父状态(即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'
}
}
})
答案 0 :(得分:1)
我无法重现您描述的问题: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'
});
视图:
{{1}}
但是,即使从您的问题中逐字复制代码,我也无法重现该问题。