1

在 Ember rc6 中,我成功地将控制器绑定到控制器内部的JobsTableColumnsController属性。将自动创建并绑定到属性。columnsJobsTableControllerJobsTableColumnsControllercolumns

以下是适用于 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属性将控制器绑定到属性的策略。

4

1 回答 1

1

这是一个错误,还是我需要使用需求属性更改将控制器绑定到属性的策略。

不,这不是一个错误,使用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

希望能帮助到你。

于 2013-08-30T00:23:46.390 回答