У меня возникла проблема получить форму ответа API в моем приложении Ember.JS. Я использую «манекен» API, чтобы изучить Ember, и мне не хотелось создавать свой собственный задний конец (this one specifically).Невозможно установить свойство 'all' of undefined
Всякий раз, когда я пытаюсь перейти к Posts
шаблона я получаю следующее сообщение об ошибке:
Error while processing route: posts Cannot read property 'all' of undefined TypeError: Cannot read property 'all' of undefined
at App.PostsRoute.Ember.Route.extend.model (file:///C:/Users/staff-ch/Documents/ember/js/app.js:24:18)
at EmberObject.default.extend.deserialize (file:///C:/Users/staff-ch/Documents/ember/js/libs/ember-1.12.0.debug.js:22318:19)
at applyHook (file:///C:/Users/staff-ch/Documents/ember/js/libs/ember-1.12.0.debug.js:45113:32)
at Object.HandlerInfo.runSharedModelHook (file:///C:/Users/staff-ch/Documents/ember/js/libs/ember-1.12.0.debug.js:43114:22)
at Object.subclass.getModel (file:///C:/Users/staff-ch/Documents/ember/js/libs/ember-1.12.0.debug.js:43340:21)
at __exports__.bind (file:///C:/Users/staff-ch/Documents/ember/js/libs/ember-1.12.0.debug.js:44982:19)
at tryCatch (file:///C:/Users/staff-ch/Documents/ember/js/libs/ember-1.12.0.debug.js:45439:16)
at invokeCallback (file:///C:/Users/staff-ch/Documents/ember/js/libs/ember-1.12.0.debug.js:45451:17)
at publish (file:///C:/Users/staff-ch/Documents/ember/js/libs/ember-1.12.0.debug.js:45422:11)
at file:///C:/Users/staff-ch/Documents/ember/js/libs/ember-1.12.0.debug.js:26472:7
Вот соответствующий код:
App = Ember.Application.create();
App.ApplicationAdapter = DS.RESTAdapter.extend({
host: 'http://jsonplaceholder.typicode.com/'
})
App.Router.map(function() {
...
this.resource('posts');
});
App.Post = DS.Model.extend({
userId: DS.attr(),
title: DS.attr(),
body: DS.attr()
});
App.PostsRoute = Ember.Route.extend({
model: function(){
return DS.store.all('posts');
}
});
Я подозреваю, что это, возможно, придется делать с форматом JSON возвращается, но я не уверен, и я не знаю, как это исправить, если это так. Я, очевидно, не могу изменить формат JSON, но я знаю DS.RESTSerilaizer
, но я не уверен, как его использовать. Образец ответа:
[
{
"userId": 1,
"id": 1,
"title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
"body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"
},...
]
Изменение 'return this.store.all ('post');' to 'return DS.store.all ('posts');' приводит к той же ошибке. Я не могу изменить формат форматирования JSON, поэтому я бы хотел его сериализовать. – IanAuld
. Ваш ответ должен иметь корневые «сообщения» – artych
Как вы можете использовать 'DS.RESTSerializer'? – IanAuld