无法访问backbone.js中的模型

时间:2012-03-23 03:00:05

标签: javascript backbone.js wcf-rest

我从以下的宁静服务得到这个结果: enter image description here

enter image description here

注意:响应是JSON格式的,它是chrome的插件,可以像这样显示它。

如果您查看图像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或我的集合中填充了单独的项目。但问题仍然是它不起作用而且不显示我的观点。

enter image description here

这是我添加的代码:

parse: function(response) {
return response.Items;
}

更新

我终于回答了我的问题! horray!不知何故,我忘记在我的ItemListview中将“()”放在渲染上。并$("#ItemContainer")似乎没有用,所以我现在正在$('#ItemContainer)显示我的模型中的详细信息。

2 个答案:

答案 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数据。