[英]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.