Javascript 如何使用ember.js通过rest适配器访问数据并将其传递给模板
我最近开始学习ember.js,在rest适配器中遇到了一些问题。 我的代码是这样的Javascript 如何使用ember.js通过rest适配器访问数据并将其传递给模板,javascript,ember.js,ember-data,Javascript,Ember.js,Ember Data,我最近开始学习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
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
}
});
App=Ember.Application.create();
App.Router.map(函数(){
本资源(“关于”);
这是资源(“员额”);
});
App.Posts=DS.Model.extend({
响应:DS.attr('string')
});
App.Store=DS.Store.extend({
修订:12,
适配器:DS.RESTAdapter.create({
命名空间:“89/gz/connectweb/timeliner/js/data.json”,
主持人:'http://local_env.mhhe.com'
})
});
App.PostsRoute=Ember.Route.extend({
模式:职能(员额){
var jsondata=this.store.find(posts);
返回jsondata;
}
});
App.PostsView=Ember.View.extend({
didInsertElement:函数(){
//这个;
var jsondata=$('#restdata').html();
var s_date=jsondata.split(“”);
var final_data=s_date[1]。拆分(“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()
});
Ember Data预期对/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而不是余烬数据:
App.PostsRoute = Ember.Route.extend({
model: function() {
return Ember.$.getJSON('/89/gz/connectweb/timeliner/js/data.json');
}
});
其次,我不明白您在视图中试图做什么。从服务返回的数据,已经在控制器中可用,您应该能够使用它
//views/posts.hbs
{{{#各}
- {{title}}
{{/每个}}
事实上,我能够按照您的回答访问数据,但我正在学习rest适配器,我想知道如何做到这一点。我只想知道如何在路由中访问rest适配器响应。如果我缺少一些方法,请告诉我。嘿,您能告诉我如何定期调用此路由吗?在正常的ajax ca中我已经使用settimeout函数调用了包含这个ajax调用的方法,但是如何调用route呢?@RanjeetSIngh看看这个答案
// views/posts.hbs
<ul>
{{#each}}
<li>{{title}}</li>
{{/each}}
</ul>