2015-02-21 4 views
1

Почему я не могу передать Id в качестве параметра в этом сценарии:Нахождение одной записи по идентификатору с Ember и Ember данных

App.Router.map(function() { 
    this.route("home", {path: '/'}); 
}); 

App.HomeRoute = Ember.Route.extend({ 
     model: function() { 
      // return this.store.find('post');//works 
      return this.store.find('post',1);//does not 
     }, 
     setupController: function (controller, model) { 
      controller.set('info', model); 
     } 
    }); 

Fiddle: http://jsfiddle.net/3bfsddvo/2/

Ref: http://emberjs.com/guides/models/finding-records/#toc_finding-a-single-record

Я знаю, что пытаюсь сделать это со своего «домашнего» маршрута, поэтому я бы предположил, что если созданный маршрут posts/[:id] все будет работать намного лучше.

Как я могу вернуть только одно сообщение на моем домашнем маршруте?

ответ

1

Я переместил ваш jsfiddle в jsbin и обработал ошибки (намного легче отлаживать jsbins). Я был в состоянии видеть эту ошибку в консоли, которая дала хорошую отправную точку:

Error while processing route: home Assertion Failed: Cannot delegate set('info', <App.Post:ember353:1>) to the 'content' property of object proxy <App.HomeController:ember393>: its 'content' is undefined. Error: Assertion Failed: Cannot delegate set('info', <App.Post:ember353:1>) to the 'content' property of object proxy <App.HomeController:ember393>: its 'content' is undefined. 

Я честно не 100% уверен, почему это работает, но я получил ваш пример работает, делая эти изменения.

Сначала я добавил явный контроллер для HomeController:

App.HomeController = Ember.Controller.extend({ 

}); 

Затем, в шаблоне, вы не имеете ничего перебирать, так что вы можете просто отобразить модель непосредственно:

<ul> 
    <li>{{info.id}} - {{info.title}}</li> 
</ul> 

JSBin

+0

Хорошо, круто, да, это имеет смысл. Я не мог найти никаких указаний на необходимость использования контроллера в большинстве учебных пособий и документов, которые я нашел. благодаря – bottleboot

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