【问题标题】:Ember.js model function, Cannot read property 'find' of undefinedEmber.js 模型函数,无法读取未定义的属性“查找”
【发布时间】:2013-04-23 20:47:22
【问题描述】:

我是 Ember.js 的新手,尝试在路由中使用模型函数时遇到问题。

我一直在关注 ember 网站上的文档,到目前为止有以下内容。

App.Latest = DS.Model.extend({
title: DS.attr('string'),
volume: DS.attr('string'),
issue: DS.attr('string')
});

App.Latest.FIXTURES = [{
"title": "test Title",
"volume": "test volume",
"issue": "test issue",
}];

App.LatestRoute = Ember.Route.extend({
    model: function() {
        return App.Latest.find();
  }
});

这在 chrome 的控制台中为我提供了以下信息

未捕获的类型错误:无法读取未定义的“查找”属性

谢谢

编辑:我正在使用 ember-1.0.0-rc.3 并且我已经设置了适配器。

修复:确保您不会像我一样犯错误,并检查您的 ember 数据是最新的

【问题讨论】:

    标签: javascript ember.js


    【解决方案1】:

    您使用的是什么版本的 ember 数据?您的适配器设置是否正确? 即

    App.Store = DS.Store.extend({
      revision: 12,
      adapter: 'DS.FixtureAdapter'
    });
    

    编辑:

    您的灯具数据需要有一个 ID 属性

    App.Latest.FIXTURES = [{
      "id"    : 1,
      "title" : "test Title",
      "volume": "test volume",
      "issue" : "test issue",
    }];
    

    http://jsbin.com/odijiq/3/edit 工作示例

    【讨论】:

    • 对不起,我应该提到这一点。是的,我的适配器与您上面的示例相同。我正在使用从 github 上的 ember starter pack 获得的 handlebars-1.0.0-rc.3 谢谢
    • 这不是 Fixtures 中缺少的 id,而是路线的名称。因此,我将您的代码与我的代码进行了比较,唯一的区别是添加了 id,您的路线被命名为 IndexRoute,而我的被命名为 LatestRoute。添加 id 并没有解决它,但将我的更改为 IndexRoute 确实解决了它。我还不是 100% 确定为什么会这样,我将不得不做更多的阅读。感谢您提供的代码示例,它帮助很大。
    • 为了完整起见,您还可以尝试在创建应用程序时添加 LOG_TRANSITIONS: true ,如此处所示jsbin.com/odijiq/4 以跟踪控制台中的路由转换以帮助跟踪问题。
    • 刚刚意识到我昨天早些时候提到的没有用,它只是将问题转移到索引视图而不是最新视图。
    • 您有发生错误的示例,以便我看一下吗?
    猜你喜欢
    • 1970-01-01
    • 2021-12-21
    • 2019-06-20
    • 1970-01-01
    • 2021-08-11
    • 2020-03-28
    • 2020-10-04
    • 2018-12-29
    • 2015-07-22
    相关资源
    最近更新 更多