1

使用最新的(来自今天的 GitHub)Ember 和 Ember 数据,这段代码给了我一个错误 - Uncaught TypeError: Cannot read property 'find' of undefined at ember-data-latest.js:3170

http://jsfiddle.net/Bf43W/9/

// 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 匹配)可以解决此问题,但这当然不是很有用。

任何人都可以阐明这里发生了什么吗?谢谢!

4

3 回答 3

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)

对比

// 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 似乎实例化了自己。

于 2012-10-16T07:25:21.053 回答
3

唯一的错误是您必须将 App.store 大写。您声明了一个类,因此命名约定需要 App.Store,以便让 App 初始化正常进行。

于 2012-07-06T22:55:22.387 回答
0

遇到同样的问题

就我而言,只是更换

App.Store = DS.Store.extend({
...
})

App.store = DS.Store.create({
...
})

解决它。所以我想 Ember.js 版本不是问题。无论如何,感谢您提出如何解决我的麻烦的想法。

于 2013-02-19T19:50:51.617 回答