2

ストアをフィルタリングしたいルートがありますが、モデル自体にないプロパティを使用しています

App.Appointment = DS.Model.extend({                                                      
    details: attr('string')                                         
});

App.Router.map(function(match) {                                               
    this.resource("appointments", { path: "/appointments" }, function() {      
        this.route("index", { path: "/:day/all" });                
    });                                                                        
});

このルートのモデル メソッドをヒットすると、この "day" プロパティを使用して API にクエリを実行するだけです (バックエンドにクエリを実行する正当な方法であるため)。しかし、それはモデルの一部ではないため、これが ember が「すべき」方法であるとは思いません。

App.AppointmentsIndexRoute = Ember.Route.extend({
    model: function(params) {
        return this.store.find('appointment', params);
    }
});

このようなモデル プロパティを公開しない ember モデルのルートはどのように記述すればよいですか?

また、setupController メソッドが呼び出されたときにこれがうまく機能しないことにも言及する必要があります。これは、注入される「モデル」パラメーターが予定モデルの配列ではなく {day: "2013-01-01"} であるためです (これをハックできます)。しかし、それは私がそれを間違っているように感じます)

4

1 に答える 1

0

ハッシュ オブジェクトを作成することでこの問題が解決することがわかりました (したがって、クエリ パラメータがサポートされるまでは、これはハッキリと感じられない良い解決策です)。

App.AppointmentsIndexRoute = Ember.Route.extend({
  model: function(params) {
    return Ember.RSVP.hash({
      appointments: this.store.find('appointment', params),
      day: params.day
    });
  },
  setupController: function(controller, model) {
    controller.set('model', model.get('appointments'));
    controller.set('day', model.get('day'));
  }
});

また、このルートへの linkTo ヘルパーまたはトランジションを作成する場合は、そのようにする必要があることも示す必要があります。

App.IndexRoute = Ember.Route.extend({                                          
    redirect: function() {                                                     
        var now = new Date();                                                  
        var today = moment(now).format('YYYY-MM-DD');                          
        this.transitionTo('appointments.index', today);                        
    }                                                                          
});
于 2013-10-12T02:08:04.567 に答える