如何使用ember.js通过rest适配器访问数据并将其传递给模板
how to use ember.js for accessing data through rest adapter and pass it to template
我最近开始学习ember.js,在rest适配器中遇到了一些问题。我的代码就像这个
App = Ember.Application.create();
App.Router.map(function() {
this.resource('about');
this.resource('posts');
});
App.Posts = DS.Model.extend({
response: DS.attr('string')
});
App.Store = DS.Store.extend({
revision: 12,
adapter: DS.RESTAdapter.create({
namespace: '89/gz/connectweb/timeliner/js/data.json',
host: 'http://local_env.mhhe.com'
})
});
App.PostsRoute = Ember.Route.extend({
model: function (posts) {
var jsondata = this.store.find(posts);
return jsondata;
}
});
App.PostsView = Ember.View.extend({
didInsertElement : function(){
// this._super();
var jsondata = $('#restdata').html();
var s_date = jsondata.split("</script>");
var final_data = s_date[1].split("<script");
var jsonarray = JSON.parse(final_data[0]);
console.log(jsonarray);
timeLineData(jsonarray)
// perform your jQuery logic here
}
});
我按代码编辑过。在这种情况下,如果我通过执行inspect元素来检查url,我就可以成功地隐藏url并获取数据作为响应,但现在这些数据没有在路由中被访问。我只想至少知道这里出了什么问题。
Ember期望数据采用json特定格式
给定以下模型:
App.Post = DS.Model.extend({
title: DS.attr(),
comments: DS.hasMany('comment'),
user: DS.belongsTo('user')
});
App.Comment = DS.Model.extend({
body: DS.attr()
});
EmberData预计对/posts/1的GET请求将以以下格式返回JSON:
{
"post": {
"id": 1,
"title": "Rails is omakase",
"comments": ["1", "2"],
"user" : "dhh"
},
"comments": [{
"id": "1",
"body": "Rails is unagi"
}, {
"id": "2",
"body": "Omakase O_o"
}]
}
如果你的数据不是这种格式,从代码的外观来看,它不是,那么你需要格式化它。你可以在这里找到如何做到这一点
或者,你可以像这篇博客文章一样,在没有ember数据的情况下使用ember。
我在这里看到的第一个问题是适配器配置。当您使用当前配置调用this.store.find('post');
时,它将调用:
http://local_env.mhhe.com/89/gz/connectweb/timeliner/js/data.json/posts
看起来你没有一个遵循预期格式的restfull后端,所以你最好只使用jquery,而不是Ember Data:
App.PostsRoute = Ember.Route.extend({
model: function() {
return Ember.$.getJSON('/89/gz/connectweb/timeliner/js/data.json');
}
});
第二,我不明白你在想做什么。从服务返回的数据已经在控制器中可用,您应该能够在模板上直接使用它
// views/posts.hbs
<ul>
{{#each}}
<li>{{title}}</li>
{{/each}}
</ul>
相关文章:
- 无法在数据endVal中设置值=“”;{{ucount}}”;使用Angular JS的CountUp
- 如何使用 Angular JS 将数据保存在数据库中
- JS验证ajax返回的html中的表单数据
- JS表单提交"无法使用Chrome数据保护程序加载此页面.尝试重新加载页面.调试信息:POST CISmtuK
- 如何使用下划线js转换这些数据
- node.js请求数据事件未在CORS ajax调用中触发
- 通过连线将数据从js发送到控制器
- 在每次文件上传时发送带有放置区的自定义数据.js
- 节点.js 如何通过基本 Passport 在数据会话中维护所需的数据.js
- 如何从 c3 获取数据.js
- 存储来自多个回调节点的数据.js javascript
- 为什么我不能在 Angular JS 服务中更改数据.js执行函数后
- 在 vis 中访问节点数据.js单击处理程序
- 为什么使用 D3 显示数据.js看起来是截断的
- 检索车把中的专用阵列数据.js模板
- 如何使用挖空恢复模板中的数据.js
- 如何从节点中获取数据.js http get request
- 如何在角度图中实现这些数据.js
- 尝试复制 json 数据 js 时出现类型错误
- 如何在基于 Backbone 的模板中添加数据.js元素