0

我正在尝试使用 ember data 1.0 beta 版本让应用程序正常工作,并且在获取路由以触发查找从服务器加载的关联模型时遇到问题。

这是我的对象的样子:

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 是对未定义 find() 的 App.Technician 的引用,因此抛出异常。

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

4

2 回答 2

2

尝试使用this.store.find(...)而不是this.get('store').find(...)

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

希望能帮助到你。

于 2013-09-18T23:29:07.000 回答
0

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

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

长话短说。确保在调用 Ember.Application.create() 之前加载了 ember-data;

于 2013-09-19T12:35:06.167 回答