随着我深入了解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>
我的代码中可能缺少什么?评论,意见,建议非常感谢
答案 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