store.find()的Ember Data v1 beta问题

时间:2013-09-18 22:44:57

标签: ember.js ember-data

我正在尝试使用ember数据1.0测试版发布应用程序,并且在获取路径以触发查找从服务器加载的关联模型时遇到问题。

这是我的对象的样子:

App.Technician = DS.Model.extend({
  first_name: DS.attr(),
  last_name: DS.attr(),
  name: function(){
    return this.get('first_name')+' '+this.get('last_name');
  }.property('first_name', 'last_name')
});

App.TechniciansRoute = Ember.Route.extend({
  model: function() {
    return this.get('store').find('technician');
  }
});

然而,当技术人员路由尝试加载模型时,this.get('store')。find()总是抛出一个未定义find的异常。 我调试了它并点击了以下功能

store: Ember.computed(function(){
    var container = this.container;
    var routeName = this.routeName;
    var namespace = get(this, 'router.namespace');

    return {
      find: function(name, value) {
        var modelClass = container.lookupFactory('model:' + name);

        Ember.assert("You used the dynamic segment " + name + "_id in your route "+ routeName + ", but " + namespace + "." + classify(name) + " did not exist and you did not override your route's `model` hook.", modelClass);

        return modelClass.find(value);
      }
    };
  })

modelClass是对App.Technician的引用,它没有定义find(),因此execption是throw。

有没有人有任何想法?感觉我错过了一些简单的东西,但我无法弄清楚它是什么。

2 个答案:

答案 0 :(得分:2)

尝试使用this.store.find(...)代替this.get('store').find(...)

App.TechniciansRoute = Ember.Route.extend({
  model: function() {
    return this.store.find('technician');
  }
});

希望它有所帮助。

答案 1 :(得分:0)

直觉像素引导我走正确的道路,但基本上发生的是依赖加载问题。

我使用require.js加载我的依赖项,发生的事情是我在调用Application.create之前没有将ember-data作为依赖项。这导致Application.initializers永远不会在我创建的应用程序对象上触发,因为初始化没有添加,直到我的数据模型和路由被加载。

这么久的故事简短。在调用Ember.Application.create();

之前确保加载了ember-data