2013-10-12 60 views
2

我有,我想用過濾商店的路線,但它的使用屬性,是不是對模型本身在ember.js中路由非模型參數的習慣用法是什麼?

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" });     
    });                   
}); 

當我打的模型法這條路,我簡單查詢api使用這個「日」屬性(因爲它是查詢後端的合法方式)。但是因爲它不是模型的一部分,我不認爲這是「應該」應用的方式。

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

我應該如何編寫一個沒有公開模型屬性的ember模型的路由?

我還應該提到,當setupController方法被調用時,因爲注入的「model」參數是{day:「2013-01-01」}而不是約會模型數組(I可以破解解決這個,但感覺就像我做錯了)

回答

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 helper或者轉換到這條路線,你需要這樣做

App.IndexRoute = Ember.Route.extend({           
    redirect: function() {              
     var now = new Date();             
     var today = moment(now).format('YYYY-MM-DD');       
     this.transitionTo('appointments.index', today);       
    }                   
}); 
相關問題