当子视图也实现控制器时,在抽象命名视图中具有控制器似乎不会触发该控制器,只有子控制器会触发。我的设置如下:
$stateProvider
.state('app', {
abstract: true,
views : {
header: {
template: "<p>My header</p>"
},
section: {
template: "<ui-view />",
controller: function () {
alert('loaded main control');
}
}
}
})
.state('app.home', {
url: '',
views: {
'section@': {
template: "<p> My initial content here </p>",
controller: function () {
alert("loaded home control");
}
}
}
})
http://plnkr.co/edit/WjUYwEfrNbZrdpUQAole?p=preview
在我看来,上面的演示应该触发两个警报,为什么没有发生这种情况?
在app.home
中,您将section@
用作视图名称,这是一个绝对匹配,然后与抽象app
状态中定义的section
视图冲突。
事实上,第一种section
观点似乎毫无用处。您可以尝试以下代码片段。
$stateProvider
.state('app', {
abstract: true,
views : {
header: {
template: "<p>My header</p>",
controller: function () {
alert("loaded main control");
}
}
}
})
.state('app.home', {
url: '',
views: {
'section@': {
template: "<p> My initial content here </p>",
controller: function () {
alert("loaded home control");
}
}
}
})
有关更多详细信息,请参阅 ui 路由器指南的"多个命名视图"部分。