Ember数据 - 未捕获的TypeError:无法读取未定义的属性“find”

时间:2012-07-06 22:16:58

标签: ember.js ember-data

使用最新的(今天来自GitHub)Ember和Ember Data,这段代码给了我一个错误 - 未捕获TypeError:无法读取未定义的属性'find'在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匹配)修复此问题,但当然这不是很有用。

有人能说清楚这里发生了什么吗?谢谢!

3 个答案:

答案 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版本不是问题。无论如何,谢谢你知道如何解决我的麻烦。