1

'pages'ArrayProxyオブジェクトに6つの'page'オブジェクトが保持されています。

これらの6つの「ページ」オブジェクトに対応する6つのビューを調整するStateManagerインスタンスがあります。

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には6つすべてではなく、2つの状態しかありません。

同様の問題がここに示されています:配列内に格納された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 に答える