如何讀取XML並在Backbone中追加視圖。使用Backbone js讀取XML並追加到視圖中
XML文件已被讀取併成功添加到視圖中。但我不知道如何在主幹結構(使用其模型)方法。
XML文件(閱讀asseturl
,width
,height
)
<library>
<assets>
<asset asseturl="img_1.png" width="100" height="150"></asset>
<asset asseturl="img_2.png" width="200" height="250"></asset>
<asset asseturl="img_3.png" width="300" height="350"></asset>
</assets>
</library>
骨幹js代碼
var Book = Backbone.Model.extend();
var Books = Backbone.Collection.extend({
model: Book,
url: "file.xml",
parse: function (data)
{
var $xml = $(data);
return $xml.find('assets').map(function()
{
var bookTitle = $(this).find('asset').each(function(){
var this_url = $(this).attr('asseturl');
var this_width = $(this).attr('width');
var this_height = $(this).attr('height');
$('.character-list').append('<li><span class="asset char">'+
'<img width="'+this_width+'" height="'+this_height+'" src="'+this_url+'">'+
'</span></li>');
});
return {title: bookTitle};
}).get();
},
fetch: function (options)
{
options = options || {};
options.dataType = "xml";
return Backbone.Collection.prototype.fetch.call(this, options);
}
});
var bookListView = Backbone.View.extend({
initialize: function()
{
this.listenTo(this.collection, "sync", this.render);
},
render: function()
{
console.log(this.collection.toJSON());
}
});
var bks = new Books();
new bookListView({collection: bks});
bks.fetch();
HTML代碼追加
<ul class="character-list">
</ul>
偶雖然上述附加功能的作品對我來說,這不是一個好的做法s在主幹parse
功能。
什麼,你可能想要做的是在你的解析函數創建的每個資產的模型,並將它們添加到集合資產。在您的listView中,您可以像在解析函數中那樣渲染它們,或者更好的方法是爲每個模型創建一個視圖並讓視圖呈現它自己。這將是處理模型和觀點的更主要方式。 –
以下是一些可以幫助你的帖子。 [post1](http://stackoverflow.com/questions/6933524/a-backbone-js-collection-of-multiple-model-subclasses/6934682#6934682),[post2](http://stackoverflow.com/questions/40510330/add-new-collection-to-parent-view-from-child-view) –