我是 CodeIgniter 开发人员,我正在尝试学习 ember.js。
我一直在尝试构建一个模型,该模型将对服务器进行 AJAX 调用,拉入 XML 文件,解析数据并返回。
以下是我的模型代码:
App.Statement = Ember.Object.extend();
App.Statement.reopenClass({
all: function() {
var transactions = {};
// FROM: http://jquerybyexample.blogspot.com/2012/04/read-and-process-xml-using-jquery-ajax.html
$.ajax({
type: "GET",
url: "http://www.example.com/transactions.xml",
dataType: "xml",
success: function(xml){
$(xml).find('transaction').each(function(i,v){
transactions[i].id = $(this).attr('id');
transactions[i].vendor = $(this).find('vendor').text();
transactions[i].date = $(this).find('date').text();
transactions[i].spent = $(this).find('spent').text();
});
},
error: function() {
console.log("An error occurred while processing XML file.");
}
});
return transactions;
}
});
以下是我的 XML 文件 (transactions.xml) 的内容:
<?xml version="1.0" encoding="UTF-8" ?>
<statement>
<transaction id="123456">
<vendor>WH Smiths</vendor>
<date>2013-05-01</date>
<spent>10.00</spent>
</transaction>
<transaction id="123457">
<vendor>Gap</vendor>
<date>2013-05-02</date>
<spent>39.99</spent>
</transaction>
<transaction id="123458">
<vendor>DSG PLC</vendor>
<date>2013-05-03</date>
<spent>1024.99</spent>
</transaction>
<transaction id="123459">
<vendor>Tesco</vendor>
<date>2013-05-06</date>
<spent>23.35</spent>
</transaction>
</statement>
当我使用控制台尝试访问事务对象时,它仍然未定义,任何人都可以指出我正确的方向吗?
更新:
好的,所以根据到目前为止的回复,我的模型现在看起来像这样:
var transaction = Ember.ArrayProxy.create({content: []});
App.Statement = DS.Model.extend({
all: function() {
var transactions = {};
// FROM: http://jquerybyexample.blogspot.com/2012/04/read-and-process-xml-using-jquery-ajax.html
$.ajax({
type: "GET",
url: "http://www.atwright.co.uk/cof/statement.xml",
dataType: "xml",
success: function(xml){
var obj = Ember.Object.create({id:null, vendor:null, date:null, spent:null});
obj.setProperties({
id: $(this).attr('id'),
vendor: $(this).find('vendor').text(),
date: $(this).find('date').text(),
spent: $(this).find('spent').text()
});
transaction.pushObject(obj);
},
error: function() {
console.log("An error occurred while processing XML file.");
}
});
return transactions;
}
});
我如何访问任何数据?我可以看到该事务具有许多与 Ember 相关的属性,但其中没有数据(尽管我可能做错了)。