使用最新的(今天来自GitHub)Ember和Ember Data,这段代码给了我一个错误 - 未捕获TypeError:无法读取未定义的属性'find'在ember-data-latest.js:3170
// only needed on JSFiddle; this is to trigger the route
history.pushState("", "", "/projects/1/tasks");
App = Ember.Application.create({});
App.store = DS.Store.extend({
revision: 4,
adapter: DS.RESTAdapter.create()
});
App.Project = DS.Model.extend({
name: DS.attr('string')
});
App.ApplicationController = Ember.ObjectController.extend({
});
App.ApplicationView = Ember.View.extend({
templateName: 'application'
});
App.TasksView = Ember.View.extend({
templateName: 'tasks'
});
App.Router = Ember.Router.extend({
root: Ember.Route.extend({
tasks: Ember.Route.extend({
route: '/projects/:project_id/tasks',
connectOutlets: function(router) {
router.get('applicationController').connectOutlet('Tasks');
}
})
})
});
App.router = App.Router.create({
location: 'history'
});
App.initialize(App.router);
更改:在其他路径中的projects_id(例如1,因此它与URL匹配)修复此问题,但当然这不是很有用。
有人能说清楚这里发生了什么吗?谢谢!
答案 0 :(得分:5)
我有同样的问题。我通过以下方式获取最新下载而不是编译最新提交来解决它:
https://github.com/emberjs/data/downloads
此代码是从3个月前开始的,所以我们坚持使用版本4,但它很稳定。
我注意到他们在Ember-Data回购中使用的Ember版本比从Ember网站下载的版本更新,我能够完成这项工作:
// Version: v1.0.pre-156-gddcc580
// Last commit: ddcc580 (2012-09-21 09:52:25 -0700)
<强> VS 强>
// Version: v1.0.pre
// Last commit: 7955b85 (2012-08-03 14:50:17 -0700)
编译最新版本的Ember-Data后,进入dist / modules以获取他们正在开发的Ember版本。
我还必须改变初始化Store的方式:
App.Store = DS.Store.extend({
revision: 4,
adapter: DS.RESTAdapter.create()
});
以强>
App.store = DS.Store.create({
revision: 6,
adapter: DS.RESTAdapter.create()
});
我还必须删除App.initialize()行,因为这个较新版本的Ember似乎在实例化。
答案 1 :(得分:3)
唯一的错误是您必须将App.store大写。你声明一个类,所以命名约定需要App.Store,以便让App初始化正确。
答案 2 :(得分:0)
遇到同样的问题
在我的情况下,只需更换
App.Store = DS.Store.extend({
...
})
到
App.store = DS.Store.create({
...
})
修好了。所以我认为Ember.js版本不是问题。无论如何,谢谢你知道如何解决我的麻烦。