使用ember和ember数据通过id查找单个记录

时间:2015-02-21 14:18:43

标签: ember.js ember-data handlebars.js

为什么我不能在这种情况下将Id作为参数传递:

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);
        }
    });

小提琴:http://jsfiddle.net/3bfsddvo/2/

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

我知道我正试图从我的“家”路线做到这一点,所以我猜想如果创建一条posts/[:id]路线,那么它们的工作效果会好很多。

如何在家乡路线中只返回一个帖子?

1 个答案:

答案 0 :(得分: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.

老实说,我并不是百分之百确定这是为什么会有效,但我通过做出这些改变让你的榜样有效。

首先,我为HomeController添加了一个显式控制器:

App.HomeController = Ember.Controller.extend({

}); 

然后,在您的模板中,您没有任何内容可以迭代,因此您可以直接显示模型:

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

JSBin