是否有不同的方法来声明与 Angular UI 路由器状态关联的控制器
Are there different ways of declaring the controller associated with an Angular UI Router state
我对 Angular UI 路由器有疑问。
在顶级或视图级别声明与状态关联的控制器有什么不同吗?
请参阅下面的代码段:
.state('signup', {
controller: 'SignupCtrl',//HERE
views: {
'@': {
controller: 'SignupCtrl',//OR THERE
templateUrl: 'signup/views/signup.html'
}
}
})
声明控制器有什么不同吗//HERE //OR THERE
?
如果有,有什么区别?
有很大的不同 - 因为只使用了一个或另一个。其实最重要的消息是:
controller does not belong to state
. It belongs to view
!
如果有 views : {}
对象,每个 view 可以有自己的 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'
})
所以最后两个是相等的。但同样,在上一个示例中,我们只使用了简化版本。控制器始终属于视图(模板)而不是状态...
我对 Angular UI 路由器有疑问。
在顶级或视图级别声明与状态关联的控制器有什么不同吗?
请参阅下面的代码段:
.state('signup', {
controller: 'SignupCtrl',//HERE
views: {
'@': {
controller: 'SignupCtrl',//OR THERE
templateUrl: 'signup/views/signup.html'
}
}
})
声明控制器有什么不同吗//HERE //OR THERE
?
如果有,有什么区别?
有很大的不同 - 因为只使用了一个或另一个。其实最重要的消息是:
controller does not belong to
state
. It belongs toview
!
如果有 views : {}
对象,每个 view 可以有自己的 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'
})
所以最后两个是相等的。但同样,在上一个示例中,我们只使用了简化版本。控制器始终属于视图(模板)而不是状态...