【问题标题】:What is the idiomatic way to route a non model param in ember.js?在 ember.js 中路由非模型参数的惯用方法是什么?
【发布时间】:2013-10-12 11:56:51
【问题描述】:

我有一条路线,我想用它来过滤商店,但它使用的属性不在模型本身上

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”} 而不是约会模型数组(我可以解决这个问题,但感觉我做错了)

【问题讨论】:

    标签: ember.js


    【解决方案1】:

    我发现创建一个哈希对象解决了这个问题(所以在支持查询参数之前,这是一个很好的解决方案,感觉不那么hacky)

    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-05-24
      • 2014-01-28
      • 2013-03-18
      • 2016-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多