2

路线:

App.Router.map(function()
{
    this.resource("login", { path: "/login"});
    this.resource("contacts", { path: "/contacts"}, function ()
    {
        this.resource("contact", { path: ":contact_id"}, function()
        {
            this.route("new");
            this.route("edit");
        });     
    });
});

App.ContactsIndexRoute = App.AuthenticatedRoute.extend(
{
    model: function()
    {
        return  App.Contact.find();
    }
});

App.ContactIndexRoute = App.AuthenticatedRoute.extend(
{
    model: function()
    {
        return this.modelFor("contact");
    },

    setupController: function(controller, model)
    {
        controller.set("content", model);
    }
});

控制器:

App.ContactsIndexController = Ember.ArrayController.extend(
{
    setProperties: ['full_name']
});

App.ContactEditControllerr = Ember.ObjectController.extend(
{

});

App.ContactIndexController = Ember.ObjectController.extend(
{
});

当我转到 #/contacts 时,我会从服务器获得完整的联系人列表。如果我转到#/contacts/1,我将获得所有数据,但如果我刷新该页面,数据就消失了,我只剩下裸露的 HTML。问题是如何在嵌套资源中保留模型,以便在页面刷新后它就在那里?

4

2 回答 2

1

我已经模拟了问题并且您的代码有效。即使使用其余适配器。

http://jsbin.com/ucanam/669#/contacts/1

我认为你的问题是你返回的 json。它必须匹配以下内容:

Several resources

获取/联系人
状态:200

{联系人:[{ id:1,全名:'Tom dale'},{ id:2,全名:'Yehuda Katz'}]}

Unique resource

获取 /contacts/1
状态:200

{联系人:{ id:1,全名:'Tom dale'}}

于 2013-08-13T12:54:27.600 回答
0

可能是在查询您的数据源以获取单个记录时出现问题。尝试在基本路由中加载联系人,以便在联系人和联系人上都调用它。

App.ContactsRoute = App.AuthenticatedRoute.extend({
  model: function() {
    return  App.Contact.find();
  }
});
于 2013-08-13T01:08:38.330 回答