繁体   English   中英

带有余烬数据的Ember App Kit

[英]Ember App Kit with ember data

我正在尝试使用ember app kit和使用ES6的ember数据开始一个新项目。 我已经设法使用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

我哪里错了?

您的Account模型使用DS.RESTAdapter而不是DS.FixtureAdapter ,因为您在ApplicationAdapter中设置适配器,预期的是AccountAdapter 所以你从ajax收到错误,可能是因为url与服务器不匹配。

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

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

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

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

我希望它有所帮助

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

你打电话的时候:

store.find('account');

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

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

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

但是我能够通过导入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的默认应用程序名称,您可能需要更改此名称或路径才能使您正常运行此功能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM