【问题标题】:store for model is undefined模型商店未定义
【发布时间】:2013-10-21 19:36:02
【问题描述】:

我正在尝试使用 ember.js 和 ember-data 为 REST 服务编写前端。服务器返回数据(我确实使用 fiddler 看到了这一点)但我总是收到错误 Unable to set property 'store' of undefined or null reference。我的 JS 代码:

window.Cube = Ember.Application.create({
    LOG_TRANSITIONS: true,
    LOG_TRANSITIONS_INTERNAL: true
});

var attr = DS.attr;

Cube.Subject = DS.Model.extend({
    name: attr(),
    change_date: attr(),
    create_date: attr()
});

Cube.ApplicationAdapter = DS.RESTAdapter.extend({
    namespace: 'backend/v1/api',
    host: 'http://localhost:58721'
});

Cube.Store = DS.Store.extend({
    revision: 12,
    url: "http://localhost:58721",
    adapter: Cube.ApplicationAdapter
});

Cube.IndexRoute = Ember.Route.extend({
    model: function (params) {
        var store = this.get('store');
        return store.findAll('Subject');
    }
});

错误源于 ember-data.js:

modelFor: function(key) {
    if (typeof key !== 'string') {
        return key;
    }

    var factory = this.container.lookupFactory('model:'+key);

    Ember.assert("No model was found for '" + key + "'", factory);

    factory.store = this; // error here
    factory.typeKey = key;

    return factory;
}

据我了解ember,store应该是自动设置的,但是一直为null。

如何定义模型,让商店可用?我错过了什么?

更新 1: 更新了余烬。现在我使用以下版本:

DEBUG: Ember      : 1.1.0
DEBUG: Ember Data : 1.0.0-beta.3
DEBUG: Handlebars : 1.0.0
DEBUG: jQuery     : 1.9.1

不,我在控制台中收到以下错误:

No model was found for 'nextObject'
Error while loading route: TypeError: Unable to set property 'store' of undefined or null reference

【问题讨论】:

    标签: javascript ember.js ember-data


    【解决方案1】:

    subject 应该是小写,另外 findAll 是一个内部方法,你应该使用 find 没有附加参数(然后调用 findAll)。

    Cube.IndexRoute = Ember.Route.extend({
      model: function (params) {
        var store = this.get('store');
        return store.find('subject');
      }
    });
    

    【讨论】:

    • 还是同样的错误。根据emberjs.com/guides/models/finding-all-records-of-a-type,您应该使用 findAll 来获取所有记录
    • 您使用的是哪个版本的 Ember Data?我刚刚注意到你的 ED 商店的建设是旧的
    • 查看 ember.js 和最新的 ember-data 时是 1.0.0
    • 使用1.0.0,更新到1.1.0(也更新了我的帖子),错误依旧
    • 最新的 Ember 数据,意思是 1.0 beta 3?如果是这样,您就错误地声明了一些事情。您可能想通读此转换文档,github.com/emberjs/data/blob/master/TRANSITION.md
    猜你喜欢
    • 2011-09-13
    • 1970-01-01
    • 1970-01-01
    • 2020-03-13
    • 1970-01-01
    • 2020-01-21
    • 2021-10-17
    • 2013-06-30
    • 1970-01-01
    相关资源
    最近更新 更多