【问题标题】:can't access model in backbone.js无法访问backbone.js中的模型
【发布时间】:2012-04-07 16:23:29
【问题描述】:

我从我拥有的宁静服务中得到了这个结果:

注意:响应是 JSON 格式,它是来自 chrome 的插件,它会这样显示。

如果你看图二[上图],模型属性是 Items,那么每个项目都在 Items 下。我应该怎么做才能访问item

我的问题是我无法从此结果中访问或检索每个项目的数据。我不能从服务器端改变任何东西。我正在使用带有此代码的主干。

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 对象的问题。现在 Models 属性或我的 Collection 填充了单个项目。但问题仍然是它不起作用并且不显示我的观点。

这是我添加的代码:

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

更新

我终于回答了我的问题!万岁!不知何故,我忘了在我的 ItemListview 中渲染“()”。而且$("#ItemContainer") 似乎也不起作用,所以我去了$('#ItemContainer) 现在我正在显示我的模型的详细信息。

【问题讨论】:

    标签: javascript backbone.js wcf-rest


    【解决方案1】:

    我相当肯定 Backbone 默认情况下对所有请求都使用 JSON,并且不知道如何处理 XML,您可能需要覆盖集合的同步方法才能使用 XML。

    以下内容应该有助于解决您的问题:http://newcome.wordpress.com/2011/02/20/consuming-xml-web-services-in-backbone-js-using-jath/

    他们在同步解析操作中使用第 3 方库 xml 解析器,将模型转换为 Backbone 可以本地使用的 JSON。

    【讨论】:

    • 没有。响应为 JSON 格式。不知何故,我在 chrome 上添加了一个插件,使它成为你图像显示的内容,但我确定响应是 JSON 格式。
    • 您不需要覆盖同步。您只需要传递选项来获取和保存来处理 XML。例如使用 fetch,你会做这样的事情: this.model.fetch({ contentType : "application/json", dataType : "xml", processData : false });像魅力一样工作。
    【解决方案2】:

    确保响应以 JSON 格式返回。 Backbone 默认处理 JSON 数据。

    【讨论】:

    • 它是 JSON 格式。只是来自 chrome 的插件使它成为这样。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-22
    相关资源
    最近更新 更多