Ember.js 仍然无法使用ember数据页上的示例从REST填充模型

Ember.js 仍然无法使用ember数据页上的示例从REST填充模型,ember.js,ember-data,Ember.js,Ember Data,所以我从我的代码开始,把它配对,然后再配对一些,直到我在models页面上找到了我的代码仍然不起作用的示例。首先,这里是我的简单代码的剩余部分 App.Router.map(function() { this.resource("multipost", function() { }); }); App.MultipostRoute = Ember.Route.extend({ model: function() { return App.Post.fi

所以我从我的代码开始,把它配对,然后再配对一些,直到我在models页面上找到了我的代码仍然不起作用的示例。首先,这里是我的简单代码的剩余部分

App.Router.map(function() {
    this.resource("multipost", function() {

    });
});

App.MultipostRoute = Ember.Route.extend({
    model: function() {
        return App.Post.find();
    }
});

App.Store = DS.Store.extend({

});

App.Post = DS.Model.extend({
    firstName: DS.attr('string'),
    lastName: DS.attr('string'),

    isPersonOfTheYear: DS.attr('boolean')
});
我的api会在route/Post上返回这个

{
    "posts": {
        "first_name": "Barack",
        "last_name": "Obama",
        "is_person_of_the_year": true
    }
}
除了一些基本的html之外,我已经尝试过了

{{firstName}}
{{posts.firstName}}
{{post.firstName}}
在我的模板中,没有人返回任何内容

我有一个简单的控制器,当我按下一个没有成功吐出任何东西的按钮时,它会吐出模型

App.MultipostController = Ember.ObjectController.extend({
    submitMultiPost: function() {
        console.log(this.get('model').get('firstName'));

        //this.get('model').save();

    }
})
我已经将许多命令转储到开发人员控制台,但这些命令没有返回任何内容。我会错过什么?当我让json返回“post”而不是“posts”作为根时,它试图做一些事情,因为它会抛出错误。但无论我做什么,或者我如何四处闲逛,我都无法在模型中找到任何东西。是的,我已经检查了XHR调用,它正在成功地进行调用并检索数据


唯一奇怪的是,我有两个文本字段,它们被绑定回模型中,一旦我输入其中一个字段,它们就会显示出来,直到那时,尽管整个模型中没有任何内容,并且看起来是空的。我在这里遗漏了什么?

如果你想得到一个帖子列表,那么回复主体必须是一个帖子数组。对于单个或多个帖子,您还必须传递id属性

{
    "posts": [{
        "id": 1
        "first_name": "Barack",
        "last_name": "Obama",
        "is_person_of_the_year": true
    }]
}

控制器需要扩展
ArrayController
,以进一步了解POST列表。要访问post字段,您可以使用
{{{controller}中的每个post}
,然后在模板的循环中使用
{post.first{u name}}

如果您想要获得一个post列表,那么响应主体必须是一个post数组。对于单个或多个帖子,您还必须传递id属性

{
    "posts": [{
        "id": 1
        "first_name": "Barack",
        "last_name": "Obama",
        "is_person_of_the_year": true
    }]
}

控制器需要扩展
ArrayController
,以进一步了解POST列表。要访问post字段,您可以使用
{{{{controller中的每个post}}
,然后在模板中的循环中使用
{post.first_name}

对,所以按照a的建议,我只是设置了一个名为“singleton”的假id,模型现在正在填充

App.MultipostRoute = Ember.Route.extend({
    model: function() {
        return App.Post.find('singleton');
    }
});
更改了GET to/posts/:id

json响应现在看起来像

{
    "post": {
        "id": "singleton",
        "first_name": "Barack",
        "last_name": "Obama",
        "is_person_of_the_year": true
    }
}

好的,所以按照a的建议,我只是设置了一个名为“singleton”的假id,模型现在正在填充

App.MultipostRoute = Ember.Route.extend({
    model: function() {
        return App.Post.find('singleton');
    }
});
更改了GET to/posts/:id

json响应现在看起来像

{
    "post": {
        "id": "singleton",
        "first_name": "Barack",
        "last_name": "Obama",
        "is_person_of_the_year": true
    }
}

有时,同时调试ember应用程序和ember数据api集成可能会很棘手。我认为@Darshan的答案可能是正确的,但类似的问题将继续发生。建议在编写应用程序时使用fixture adapter,然后将其替换为rest adapter,并连接到您真正的api。Welp,目前看来加载单一数据并不是现成支持的,这有点奇怪。听着,我完全忽略了你在尝试单例资源的事实!我把它解释为
/post/1
,即:-一条记录。很高兴你找到了答案。有时,同时调试一个ember应用程序和一个ember数据api集成可能会很棘手。我认为@Darshan的答案可能是正确的,但类似的问题将继续发生。建议在编写应用程序时使用fixture adapter,然后将其替换为rest adapter,并连接到您真正的api。Welp,目前看来加载单一数据并不是现成支持的,这有点奇怪。听着,我完全忽略了你在尝试单例资源的事实!我把它解释为
/post/1
,即:-一条记录。很高兴你弄明白了。对,这个案例是一个单一的记录,但是给定的语法不应该起作用吗?我想我知道这是怎么回事了,那么加载单个模型的约定是什么?在这个例子中,我试图做的是发送一个没有id的用户配置文件,并且总是有一条记录。我是否需要编写一些额外的代码来让rest适配器更好地发挥作用?好的,对于单个记录,json api应该在
“post”:{…}
包装器中返回对象。尝试将api更改为使用
post
而不是
posts
。对,这是我最初的设置,但返回:
断言失败:您的服务器返回了一个带有键post的哈希,但您没有它的映射,这听起来不正确。如果你能在网上举个例子,我可以看看。这东西确实管用。:)好的,这个例子是一个单一的记录,但是给定的语法不应该起作用吗?我想我知道这是怎么回事了,那么加载单个模型的惯例是什么?在这个例子中,我试图做的是发送一个没有id的用户配置文件,并且总是有一条记录。我是否需要编写一些额外的代码来让rest适配器更好地发挥作用?好的,对于单个记录,json api应该在
“post”:{…}
包装器中返回对象。尝试将api更改为使用
post
而不是
posts
。对,这是我最初的设置,但返回:
断言失败:您的服务器返回了一个带有键post的哈希,但您没有它的映射,这听起来不正确。如果你能在网上举个例子,我可以看看。这东西确实管用。:)