带有余烬数据的Ember App Kit

时间:2013-09-11 13:31:29

标签: ember.js ember-data ember-app-kit

我正在尝试使用ember app kit开始一个新项目并使用ES6实现数据。我已设法使用adapter.js

中的以下代码创建商店
var ApplicationAdapter = DS.FixtureAdapter.extend();
export default ApplicationAdapter;

但是,我没有创建模型并访问它。在models/account.js我有这个

var Account = DS.Model.extend({
  name: DS.attr('string')
});

Account.FIXTURES = [
  {
    'id': 1,
    'name': 'Acc 1'
  }, {
    'id': 2,
    'name': 'Acc 2'
  }
]

export default Account;

在我的routes/accounts.js我有这个:

var AccountsRoute = Ember.Route.extend({
  model: function() {
    var store = this.get('store');
    return store.find('account');
  }
});
export default AccountsRoute;

在这个阶段,我只是想从屏幕上显示的灯具中获取一个帐户列表。路由很好,如果我输入静态数据(如索引路由),那么一切正常。但是,使用上面的代码,我遇到了麻烦

DEPRECATION: Action handlers contained in an `events` object are deprecated in favor of putting them in an `actions` object (error on <Ember.Route:ember352>)
    at Object.triggerEvent (http://localhost:8000/vendor/ember/index.js:30519:13)
    at trigger (http://localhost:8000/vendor/ember/index.js:29641:16)
    at handleError (http://localhost:8000/vendor/ember/index.js:29903:9)
    at invokeCallback (http://localhost:8000/vendor/ember/index.js:8055:19)
    at null.<anonymous> (http://localhost:8000/vendor/ember/index.js:8109:11)
    at EventTarget.trigger (http://localhost:8000/vendor/ember/index.js:7878:22)
    at http://localhost:8000/vendor/ember/index.js:8180:17
    at Object.DeferredActionQueues.flush     (http://localhost:8000/vendor/ember/index.js:5459:24)
    at Object.Backburner.end (http://localhost:8000/vendor/ember/index.js:5545:27) index.js:394
Error while loading route: 
Object {readyState: 4, getResponseHeader: function, getAllResponseHeaders: function,   setRequestHeader: function, overrideMimeType: function…}
 index.js:394
Uncaught #<Object> index.js:30566

我哪里错了?

3 个答案:

答案 0 :(得分:7)

您的Account模型正在使用DS.RESTAdapter而不是DS.FixtureAdapter,因为您要在ApplicationAdapter中设置适配器,预期为AccountAdapter。因此,您收到来自ajax的错误,可能是因为该网址与服务器不匹配。

要为每个模型使用配置DS.FixtureAdapter

var AccountAdapter = DS.FixtureAdapter.extend();
export default AccountAdapter; 

或作为所有型号的全局适配器:

App.Store = DS.Store.extend({
    adapter: DS.FixtureAdapter
});

我希望它有所帮助

答案 1 :(得分:2)

我认为真正的问题是您在 adapters / adapter.js 中定义了Fixture Adapter。

当你致电:

store.find('account');

它正确找到了模型,但随后找到了正确的适配器。您没有 adapters / account.js ,因此它使用了应用程序默认值,已提到的是RESTAdapter。

要让您的示例正常工作,只需更改文件名即可。

答案 2 :(得分:1)

我得到了同样的错误......

但是我可以通过导入ApplicationAdapter来解决这个问题,并使用它来定义我的商店:

应用程序/适配器/ application.js中:

var ApplicationAdapter = DS.FixtureAdapter.extend();

export default ApplicationAdapter;

应用程序/商店/ application.js中:

import ApplicationAdapter from 'appkit/adapters/application';
var Store = DS.Store.extend({
    adapter: ApplicationAdapter
});

export default Store;

请记住,我还没有更改appkit的默认应用程序名称,您可能需要更改此名称或路径才能使您正常运行此功能。