我从以下的宁静服务得到这个结果:
如果您查看图像2 [上面的图像],模型属性为项目,则每个项目都在项目下。我该怎么做来访问项目?
我的问题是我无法从此结果访问或检索每个项目的数据。我不能从服务器端改变任何东西。我正在使用此代码的主干。
window.Item = Backbone.Model.extend();
window.ItemCollection = Backbone.Collection.extend({
model: Item,
url: 'http://localhost/InterprisePOS/Product/loaditembycategory/Event Materials'
});
window.ItemListView = Backbone.View.extend({
tagName : 'ul',
initialize: function(){
this.model.bind("reset",this.render,this);
},
render: function(eventName){
_.each(this.model.models.Items, function(item){
$(this.el).append(new ItemListItemView({model:item}).render.el);
},this);
return this;
}
});
window.ItemListItemView = Backbone.View.extend({
template : _.template($("#item-list").html()),
render: function(eventName){
$(this.el).html(this.template(this.model.toJSON()));
return this;
}
});
var AppRouter = Backbone.Router.extend({
routes:{
"":"list"
},
list:function(){
this.itemList = new ItemCollection();
this.itemListView = new ItemListView({model:this.itemList});
this.itemList.fetch();
$("#itemContainer").html(this.itemListView.render().el);
}
});
var app = new AppRouter();
Backbone.history.start();
我能够用嵌套的json对象纠正我的问题。现在,模特attrib或我的集合中填充了单独的项目。但问题仍然是它不起作用而且不显示我的观点。
这是我添加的代码:
parse: function(response) {
return response.Items;
}
我终于回答了我的问题! horray!不知何故,我忘记在我的ItemListview中将“()”放在渲染上。并$("#ItemContainer")
似乎没有用,所以我现在正在$('#ItemContainer)
显示我的模型中的详细信息。
答案 0 :(得分:0)
我很确定Backbone默认情况下对所有请求都使用JSON,并且不知道如何处理XML,你可能需要覆盖集合的sync方法才能使用XML。
以下内容应有助于解决您的问题:http://newcome.wordpress.com/2011/02/20/consuming-xml-web-services-in-backbone-js-using-jath/
他们在同步解析操作中使用第三方库xml解析器,该操作将模型转换为Backbone可以原生使用的JSON。
答案 1 :(得分:0)
确保响应以JSON格式返回。 Backbone默认使用JSON数据。