Javascript Ember显示来自ajax调用的数据

Javascript Ember显示来自ajax调用的数据,javascript,ajax,ember.js,Javascript,Ajax,Ember.js,我遇到了他的错误,因为我试图显示来自ajax调用的一些数据: Uncaught TypeError: Object #<Object> has no method 'addArrayObserver' 对于模板: <ul> {{#each item in content}} <li>{{item.id}}</li> {{/each}} </ul> 到目前为止,我还不确定使用Ember.ArrayPr

我遇到了他的错误,因为我试图显示来自ajax调用的一些数据:

Uncaught TypeError: Object #<Object> has no method 'addArrayObserver' 
对于模板:

    <ul>
    {{#each item in content}}
    <li>{{item.id}}</li>
    {{/each}}
</ul>
到目前为止,我还不确定使用Ember.ArrayProxy是否是一个好主意,但在阅读了文档后,我认为这可以奏效,但没有


我试着上网,但似乎我是唯一一个有这个问题的人

错误消息基本上是说,余烬需要一个数组,但没有数组。我认为这是因为您直接将AJAX响应设置为ArrayProxy的内容属性。但您的响应对象不是数组,您的注释至少表明了这一点

我想推荐如下内容。有关如何在不使用余烬数据的情况下使用余烬的更多详细信息,请参阅本文

App.Enquiry = Ember.Object.extend({ // rather one Object for each Enquiry

});

App.EnquiriesRoute = Ember.Route.extend({
    model: function() {
        return App.Enquiries.findAll();
    }
});

App.Enquiries.reopenClass({
   findAll: function() {
       var result = [];
       $.ajax({
           url: host + 'mdf/enquiry',
           type: 'GET',
           accepts: 'application/json',
           success: function(data) {
               data.enquiries.forEach(function(enquiry){
                  // we are iterating the enquiries in the response step by step and create corresponding objects
                  var model = App.Enquiry.create(enquiry); 
                  result.addObject(model); //fill your array step by step
               });
               console.log('DEBUG: GET Enquiries OK');
           },
           error: function() {
               console.log('DEBUG: GET Enquiries Failed');
           }
       });
       return result;
   }
});

错误消息基本上是说,余烬需要一个数组,但没有数组。我认为这是因为您直接将AJAX响应设置为ArrayProxy的内容属性。但您的响应对象不是数组,您的注释至少表明了这一点

我想推荐如下内容。有关如何在不使用余烬数据的情况下使用余烬的更多详细信息,请参阅本文

App.Enquiry = Ember.Object.extend({ // rather one Object for each Enquiry

});

App.EnquiriesRoute = Ember.Route.extend({
    model: function() {
        return App.Enquiries.findAll();
    }
});

App.Enquiries.reopenClass({
   findAll: function() {
       var result = [];
       $.ajax({
           url: host + 'mdf/enquiry',
           type: 'GET',
           accepts: 'application/json',
           success: function(data) {
               data.enquiries.forEach(function(enquiry){
                  // we are iterating the enquiries in the response step by step and create corresponding objects
                  var model = App.Enquiry.create(enquiry); 
                  result.addObject(model); //fill your array step by step
               });
               console.log('DEBUG: GET Enquiries OK');
           },
           error: function() {
               console.log('DEBUG: GET Enquiries Failed');
           }
       });
       return result;
   }
});

你需要在findAll上做一个.property吗?我是Ember的新手,不幸的是,我不知道你这么说是什么意思。首先,你的应用程序采用了与当前指南不同的结构,但如果你的应用程序需要的话,你可以这样做。您使用的是什么版本的余烬?您是否计划使用余烬数据?我建议将.property放在findAll函数的右大括号上。我使用的是ember的v1.3.1。我已经使用余烬数据来存储一些登录信息。我想直接显示请求中的数据,因为有很多信息。。我很可能会收到这样一个对象:object{ok:true,inquiries:Array[3]}inquiries:Array[3]0:object 1:object 2:object,inquiries中的每个对象都有很多信息。。如果有一个最简单的方法,我想知道,因为即使在阅读了指南之后,我也无法理解..你需要在findAll上做一个.property吗?我是Ember的新手不幸的是,我不确定你的意思是什么。好吧,首先,你遵循的应用程序结构与当前指南使用的不同,但如果应用程序需要,您可以这样做。您使用的是什么版本的余烬?您是否计划使用余烬数据?我建议将.property放在findAll函数的右大括号上。我使用的是ember的v1.3.1。我已经使用余烬数据来存储一些登录信息。我想直接显示请求中的数据,因为有很多信息。。我很可能会收到这样一个对象:object{ok:true,inquiries:Array[3]}inquiries:Array[3]0:object 1:object 2:object,inquiries中的每个对象都有很多信息。。如果有最简单的方法,我很想知道,因为即使在阅读了指南之后,我也无法理解。谢谢你!!它的工作;只是为了告知我必须将对象保持为空,因为重新打开了类,所以调用了inquiries,并调用App.inquiries.create。工作完美!!谢谢你!!它的工作;只是为了告知我必须将对象保持为空,因为重新打开了类,所以调用了inquiries,并调用App.inquiries.create。工作完美!!