0

乾杯!takenSeatsNumbers2 つのコントローラーがあり、 fromにアクセスしたいと考えていますTravelClient.TourController

TravelClient.TourController = Ember.ObjectController.extend({
  needs: ['tour.seats']
});

TravelClient.TourSeatsController = Ember.ObjectController.extend({
  takenSeatsNumbers: []
});

needsは正しい方法で使用していますか?そして、テンプレートtakenSeatsNumbersから取得する方法は?tour

4

2 に答える 2

1

前述のように、これは現在のバグであるため、上記は機能しているように見えますが、jsFiddle が示すように、実際には機能しません。当面の解決策はthis.controllerFor、ルートを介してコントローラーのインスタンスを渡すことです。理想にはほど遠いですが、今のところは十分です。

これは、Ember がdot.notationを使用してコントローラーを参照するために発生しますが、camelCaseまたは *under_scores* を使用すると、異なるインスタンスが作成されます。

解決策は、次のように、ルートからコントローラーを挿入することです。

TravelClient.IndexRoute = Ember.Route.extend({
    setupController: function(controller) {
        var tourSeatsController = this.controllerFor('tour.seats');
        tourSeatsController.set('takenSeatsNumbers', [1,2,3]);
        controller.set('tourSeatsController', tourSeatsController);
    }
});

そして、ビューで次のように使用できます{{tourSeatsController.takenSeatsNumbers.length}}

于 2013-02-19T10:21:29.103 に答える
0

このコードは ember-pre4 に基づいています。別のコントローラーからのプロパティのプロキシは、このようなパターンのようであり、ミックスインの助けを借りて一般化できる可能性があります。

TravelClient.TourController = Ember.ObjectController.extend({
  needs: ['tourSeats'],
  someMethod : function(){
    var tourSeatsController = this.get("controllers.tourSeats");
    // do something with it
  },
  takenSeatsNumbers : function(){ //proxy the property
    return this.get("controllers.tourSeats.takenSeatsNumbers")
  }.property("controllers.tourSeats.takenSeatsNumbers")
});

TravelClient.TourSeatsController = Ember.ObjectController.extend({
  takenSeatsNumbers: []
});
于 2013-02-19T10:07:26.737 に答える