在Ember rc6中,我成功地将控制器JobsTableColumnsController
绑定到控制器columns
内的属性JobsTableController
。将创建JobsTableColumnsController
并自动绑定到columns
属性。
以下是在rc6中运行的代码:
App.JobsTableRoute = Ember.Route.extend
model: -> App.Job.all()
setupController: (ctlr, model) -> ctlr.set('content', model)
App.JobsTableController = App.TableController.extend
needs: ['jobsTableColumns']
columnsBinding: 'controllers.jobsTableColumns'
App.JobsTableColumnsController = App.ColumnsController.extend
content: Em.A([
App.ColumnDefinition.create(name: 'Id')
App.ColumnDefinition.create(name: 'Description')
])
在rc8中,我必须在路由器中明确地将JobsTableColumnsController
设置为JobsTableController.columns
属性,如下所示:
App.JobsTableRoute = Ember.Route.extend
model: -> App.Job.all()
setupController: (ctlr, model) ->
columns = @controllerFor('jobsTableColumns')
ctlr.set('columns', columns)
ctlr.set('content', model)
这是一个错误,还是我需要使用needs
属性更改将控制器绑定到属性的策略。
答案 0 :(得分:1)
这是一个错误,还是我需要使用needs属性更改将控制器绑定到属性的策略。
不,这不是一个错误,somePropertyBinding
的使用是悄悄地,不赞成使用计算属性。如需参考,请参阅Peter Wagenet的评论:https://github.com/emberjs/ember.js/issues/1164#issuecomment-23200023
至于新策略,您应该使用Ember.computed.alias
。
App.JobsTableController = App.TableController.extend
needs: ['jobsTableColumns']
columns: Ember.computed.alias('controllers.jobsTableColumns')
这样您就不需要JobsTableRoute
setupController
挂钩中的额外工作。
希望它有所帮助。