簡體   English   中英

Ember顯示來自Ajax調用的數據

[英]Ember displaying data from an ajax call

自從嘗試顯示來自ajax調用的一些數據以來,我就遇到了他的錯誤:

Uncaught TypeError: Object #<Object> has no method 'addArrayObserver' 

該應用程序非常簡單,但是當我進入特定頁面時,我想向我的服務器發送一個ajax請求。 因此,我可以直接從服務器加載數據。

這是我的代碼:

App.Enquiries = Ember.Object.extend({

});

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

App.Enquiries.reopenClass({
   findAll: function() {
       var result = Ember.ArrayProxy.create({content: []});
       $.ajax({
           url: host + 'mdf/enquiry',
           type: 'GET',
           accepts: 'application/json',
           success: function(data) {
               result.set('content', data);
               console.log('DEBUG: GET Enquiries OK');
           },
           error: function() {
               console.log('DEBUG: GET Enquiries Failed');
           }
       });
       return result;
   }
});

而對於模板:

    <ul>
    {{#each item in content}}
    <li>{{item.id}}</li>
    {{/each}}
</ul>

到目前為止,我不確定使用Ember.ArrayProxy是否是一個好主意,但是在閱讀了文檔之后,我認為那可以工作,但是沒有。

我嘗試在網上查看,但似乎我可能是唯一遇到此問題的人?

錯誤消息基本上說,Ember需要一個數組,但是沒有數組。 我認為這是因為您直接將AJAX響應設置為ArrayProxy的content屬性。 但是您的響應對象沒有數組(您的注釋至少表明了這一點)。

我建議類似以下內容。 請查看此問題,以獲取有關如何在沒有Ember Data的情況下使用Ember的更多詳細信息。

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;
   }
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM