Javascript 如何使用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

我最近开始学习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
  }
});
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>