【问题标题】:ember-data fixture data "Cannot read property 'promise' of undefined"ember-data 夹具数据“无法读取未定义的属性‘承诺’”
【发布时间】:2013-04-28 00:29:32
【问题描述】:

这让我发疯了。我或多或少地遵循http://emberjs.com/guides/ 的指南视频,但提供了我自己的夹具数据数据集。但是,无论我尝试什么,最终都会出现错误:

未捕获的类型错误:无法读取未定义的 ember-data.js:240 的属性“承诺”

JS:

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

});

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

App.CurrentUser = DS.Model.extend({
    username: DS.attr('string'),
    email: DS.attr('string'),
    session: DS.attr('string')
});

App.CurrentUser.FIXTURES = [
    {
        id: 1,
        username: "gamerbob",
        email: "bob@gamer.com",
        session: "ABC123"
    }
];

模板:

<script type="text/x-handlebars" data-template-name="unauthed">
    Resusult:
    {{#each model}}
        {{username}}
    {{/each}}
</script>

如果我从路由的模型钩子中删除 App.CurrentUser.find() ,则没有错误,但这也违背了目的。这里发生了什么?是我做错了什么,还是 ember-data 不稳定?

【问题讨论】:

  • DS.FixtureAdapter 似乎存在问题:App.CurrentUser.find() 返回一个空数组。我想看看。
  • 好像和ember-data有关。使用较旧的版本为我解决了这个问题。见:builds.emberjs.com

标签: ember.js ember-data


【解决方案1】:

您使用的 ember-data 版本需要最新版本的 ember 之一。这与 ember 内部升级到 2.0 版本的 RSVP.js 有关。

https://github.com/emberjs/ember.js/commit/cf4d50dd745c8d31a69fe5ad2aea78a92bbbde2a#packages/ember-runtime/lib/mixins/deferred.js

【讨论】:

  • 正确。更新到 ember-latest 解决了这个问题。我使用的是RC3,它甚至还不到一周,所以我没有怀疑。谢谢!
  • 您能告诉我 Ember 和 Ember 数据的哪些版本兼容吗?我在所有版本的 Ember 和 Ember 数据中都遇到了这个错误。这让我更加喜欢 Backbone :)
  • 如果您使用最新(主)版本的库,则不会出现该错误。
  • ember 和 ember-data 的最新版本可以在builds.emberjs.com找到。
猜你喜欢
  • 2019-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-24
  • 1970-01-01
  • 2019-04-23
  • 1970-01-01
相关资源
最近更新 更多