1

所以我从我的代码开始,将它配对,然后再配对,直到我一直到模型页面上找到的示例,但我的代码仍然无法正常工作。首先这是我的简单代码的剩余部分

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 在路由 /posts 返回这个

{
    "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 调用,它成功地进行调用并检索数据。

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

4

2 回答 2

1

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

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

将 GET 更改为 /posts/:id

json 响应现在看起来像

{
    "post": {
        "id": "singleton",
        "first_name": "Barack",
        "last_name": "Obama",
        "is_person_of_the_year": true
    }
}
于 2013-07-05T15:06:16.427 回答
0

If you intend to get a list of posts, then the response body must be an array of posts. Also for both single or multiple posts you must pass an id attribute as well.

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

Further for list of posts the controller needs to extend ArrayController. And to get to the post fields you would use {{#each post in controller}} and then use {{post.first_name}} within the loop in your template.

于 2013-07-05T03:56:01.207 回答