在Ember js中处理来自AJAX调用的数据

在Ember js中处理来自AJAX调用的数据,ajax,ember.js,ember-data,Ajax,Ember.js,Ember Data,我是Ember js的新手,我很难理解为什么这不起作用。本质上,我向服务器发送GET请求,它给我一个数组。我想让那个数组显示它的内容 app.js 当您转到测试页面时,应该触发该操作,并将一个数组返回到模型,在该模型中可以获取数据以填充页面 在我的HTML中,我有: script type="text/x-handlebars" id="test"> <ul> {{#each item in model}}

我是Ember js的新手,我很难理解为什么这不起作用。本质上,我向服务器发送GET请求,它给我一个数组。我想让那个数组显示它的内容

app.js

当您转到测试页面时,应该触发该操作,并将一个数组返回到模型,在该模型中可以获取数据以填充页面

在我的HTML中,我有:

script type="text/x-handlebars" id="test">
        <ul>
            {{#each item in model}}
                <li>{{item.ID}}</li>
            {{/each}}
        </ul>
        {{outlet}}
    </script>

应用程序运行时没有错误,但当我导航到测试页面时,该页面没有填充任何数据。

您的问题是同步代码没有返回任何内容。您的
model
函数返回
App.Test.findAll()
,这从来都不是什么。你需要回报一个承诺

findAll: function () {
  var result = [];
  return new Ember.RSVP.Promise(function (resolve, reject) {
    Ember.$.ajax({
      type: 'GET',
      url: 'myurl',
      headers: { 'myheader' },
      success: function (data) {
        data.dummyArray.forEach(function (item) {
          result.push(App.Test.create(item));
        });
        resolve(result);
      },
      error: function (request, textStatus, error) {
        console.log(error);
        reject(error);
      }
    });
  });
}
Object {dummyArray: Array[4]}
    dummyArray: Array[4]
        0: Object
            ID: 1111
        1: Object
            ID: 1112
        2: Object
            ID: 1113
        3: Object
            ID: 1114
findAll: function () {
  var result = [];
  return new Ember.RSVP.Promise(function (resolve, reject) {
    Ember.$.ajax({
      type: 'GET',
      url: 'myurl',
      headers: { 'myheader' },
      success: function (data) {
        data.dummyArray.forEach(function (item) {
          result.push(App.Test.create(item));
        });
        resolve(result);
      },
      error: function (request, textStatus, error) {
        console.log(error);
        reject(error);
      }
    });
  });
}