我正在尝试使用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
我哪里错了?
答案 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的默认应用程序名称,您可能需要更改此名称或路径才能使您正常运行此功能。