使用Ember检索数据

时间:2014-10-22 06:48:03

标签: json ember.js

随着我深入了解EmberJS,我进入了这个需要使用HTTP请求的环境。首先,我尝试检索JSON数据,因此我创建了一个返回JSON的测试页面,并通过反序列化验证了它是否为JSON。没有遇到错误,但根本没有输出。以下是我的代码的详细信息

的application.js

    App = Ember.Application.create({});

    App.ApplicationAdapter = DS.RESTAdapter.extend({
        host: 'http://172.19.20.30/EmberTest/testApi.aspx'
    });

event.js

    App.Event = DS.Model.extend({
        title: DS.attr('string'),
        body: DS.attr('string')
    });

router.js

    App.Router.map(function () {
        this.resource('events', {path: '/'});
    });

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

来自主机的JSON输出

    { "events": [{ "id": 1, "title": "test title", "body": "test body" },{ "id": 2, "title": "another title", "body": "another body" }] }

HTML

<script type="text/x-handlebars" data-template-name="events">
    this is an example
    {{#each e in model}}
        <label>{{e.title}}</label><br />
    {{/each}}
</script>

我的代码中可能缺少什么?评论,意见,建议非常感谢

1 个答案:

答案 0 :(得分:0)

看起来返回JSON是错误的......它应该是单数的:

{ "event": [{ "id": 1, "title": "test title", "body": "test body" },{ "id": 2, "title": "another title", "body": "another body" }] }

使用Ember Data进行查找时,它应具有型号名称:

this.store.find('event')所以Ember-data知道返回地图的位置。

这将生成网址http://host:port/event

如果您要更改host,它应该只是您正在更改的基本网址而非绝对网址。所以在你的情况下:

App.ApplicationAdapter = DS.RESTAdapter.extend({
    host: 'http://172.19.20.30/EmberTest'
});

然后该网址将变为http://172.19.20.30/EmberTest/events