1

我在 'pages' ArrayProxy 对象中有 6 个 'page' 对象。

我有一个 StateManager 实例,它将调节与这 6 个“页面”对象相对应的 6 个视图。

App.stateManager = Ember.StateManager.create({
  rootElement: '.tab-content',
  initialState: 'firstTab',
  firstTab: Ember.ViewState.create({
    view: Ember.View.extend({
      templateName: 'first',
      contentBinding: 'App.tempObject'// binding to a regular Ember Object works.
    })
  }),
  secondTab: Ember.ViewState.create({
    view: Ember.View.extend({
      templateName: 'second',
      contentBinding: 'WHAT GOES HERE?'//how to bind to an object in an array
    })
  })

问题是不清楚如何将视图绑定到 ArrayController 中的特定对象。

我有一个 jsFiddle 说明这里的问题:http: //jsfiddle.net/lifeinafolder/xUNUN/

出于说明目的,jsFiddle 只有 2 个状态,而不是全部 6 个。

这里显示了一个类似的问题:Ember.js 绑定模型存储在一个数组中。解决方案虽然不是很清楚。

4

1 回答 1

1

您可以创建一个计算属性,该属性返回特定索引处的对象,请参阅http://jsfiddle.net/pangratz666/MUUs3/

App.ObjectAtBindable = Ember.Mixin.create({
    targetObject: function() {
        var objectIndex = this.get('objectIndex');
        var controller = this.get('controller');
        if (controller) {
            return controller.objectAt(objectIndex);
        }
        return null;
    }.property('controller', 'objectIndex').cacheable()
});

App.stateManager = Ember.StateManager.create({
    firstTab: Ember.ViewState.create({
        view: Ember.View.extend(App.ObjectAtBindable, {
            templateName: 'first',
            contentBinding: 'targetObject',
            controllerBinding: 'App.controller',
            objectIndex: 0
        })
    })
});
于 2012-04-25T10:12:12.157 回答