我对Angular UI路由器进行了询问。
在顶级或视图级别声明与状态相关联的控制器有何不同?
请参阅下面的代码段:
.state('signup', {
controller: 'SignupCtrl',//HERE
views: {
'@': {
controller: 'SignupCtrl',//OR THERE
templateUrl: 'signup/views/signup.html'
}
}
})
声明控制器//HERE //OR THERE
是否有任何不同?
如果有,那有什么区别?
答案 0 :(得分:2)
存在很大差异 - 因为只使用了一种或另一种。事实上,最重要的信息是:
控制器不属于
state
。它属于view
!
如果有views : {}
个对象,则每个视图都可以定义自己的controller
。
.state('myState', {
views: {
'@': {
controller: 'SignupCtrl',
templateUrl: 'signup/views/signup.html'
},
'hint@': {
controller: 'HintCtrl',
templateUrl: 'signup/views/signup.html'
}
}
})
有一个特殊的视图定义。如果我们在州父母中定位ui-view =“”,就会发生这种情况。在这种情况下,我们仍然可以这样写:
.state('myState', {
views: {
'': {
controller: 'SignupCtrl',
templateUrl: 'signup/views/signup.html'
},
}
})
但是我们可以使用简化版,等于这个定义:
.state('myState', {
controller: 'SignupCtrl',
templateUrl: 'signup/views/signup.html'
})
所以最后两个在结尾是平等的。但是,在最后一个例子中,我们只使用了简化版本。控制器始终属于视图(模板)而不是状态...