Ember.js Fixture findQuery

时间:2014-02-26 01:39:02

标签: ember.js

我正在尝试更改Ember中的URL以使用模型(标题)上的属性,而不是ID。如果我点击一个链接,我可以让一切工作,但当我重新加载模型路线时,一切似乎都崩溃了。在queryFixtures中,我可以返回所需的项目,this通过将“实验”记录到模型钩子中的控制台来记录到控制台。

App.ExperimentRoute = Ember.Route.extend({
    serialize: function(experiment, params) {
        return {
            experiment_title: experiment.get('urlFriendlyName')
        }
    },
    model : function(params) {
        experiment = this.get('store').find('experiment', { title: params.experiment_title });
        return experiment;
    }
});

我的商店:

App.Store = DS.Store.extend({
    adapter: DS.FixtureAdapter.extend({
        queryFixtures: function(fixtures, query, type) {

            function urlFriendlyTitle(title) {
                var ret = title.replace(/ /g,"-"); // replace spaces
                // do other replacements that make sense in your case, e.g.:
                ret = ret.replace(/&/g,"and");
                //... and so on and so forth
                // encode the remaining characters
                ret = ret.toLowerCase();
                ret = encodeURIComponent(ret);
                return ret;
            }
            return fixtures.filter(function(item) {
                if(urlFriendlyTitle(item.title) == query.title) {
                    // console.log(item);
                    return item;
                }
            });
        }
    })
});

更新

App.ExperimentRoute = Ember.Route.extend({
    model : function(params) {
        experiment = this.get('store').find('experiment', {     });
        console.log(Ember.inspect(experiment))
        return experiment;
    }
});

在控制台中运行上述输出“<DS.PromiseArray:ember325>

App.Router.map(function () {
  // Add your routes here
  this.resource('category', { path: '/:category_id'}, function() {
      this.resource('experiment', { path: '/:experiment_title' }, function() {
        this.resource('device', { path: '/:device' });
      });
  });
});

App.ExperimentRoute = Ember.Route.extend({
    setupController: function(controller, model) {
        console.log(Ember.inspect(model))
        console.log(Ember.inspect(controller))
    }
})

此路线输出<App.ExperimentController:ember388> <DS.AdapterPopulatedRecordArray:ember326>

0 个答案:

没有答案