2015-06-09 2 views
0

У меня возникла проблема получить форму ответа 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" 
    },... 
] 

ответ

0

1) Только

App.PostsRoute = Ember.Route.extend({ 
    model: function(){ 
    return this.store.all('post'); 
    } 
}); 

вместо return DS.store.all('posts');

DS.Store вводится в качестве маршрутов store собственности.

2) Ваш ответ должен иметь корень posts.

+0

Изменение 'return this.store.all ('post');' to 'return DS.store.all ('posts');' приводит к той же ошибке. Я не могу изменить формат форматирования JSON, поэтому я бы хотел его сериализовать. – IanAuld

+0

. Ваш ответ должен иметь корневые «сообщения» – artych

+0

Как вы можете использовать 'DS.RESTSerializer'? – IanAuld

Смежные вопросы