我正在尝试使用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。
有没有人有任何想法?感觉我错过了一些简单的东西,但我无法弄清楚它是什么。
答案 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