Backbone和JSON解析

时间:2014-05-26 12:42:39

标签: javascript json backbone.js

我对backbonejs有疑问 我需要解析一个JSON字符串并将其附加到index.html文件上,没有太复杂 唯一的问题是我不知道如何正确解析并将每个模型属性附加到index.html文件 如果我在渲染视图中执行console.log,它会打印类似r {....}的内容 如果它看起来我有2个模型但是当我尝试像在解析时返回response.title那样得到0个模型 JSON:

[{"color": "green", "title": "Spinach"}, {"color": "yellow", "title": "Apple"}]

以下是代码:

(function($){
  // **ListView class**: Our main app view.       

var Link = Backbone.Model.extend({});

var C = Backbone.Collection.extend({       
   model:Link,
   url:'/json',   
  parse : function(response){
        return response;  
   }      
});

var ListView = Backbone.View.extend({
el: $('body'), // attaches `this.el` to an existing element.
// `initialize()`: Automatically called upon instantiation. Where you make all types of bindings, _excluding_ UI events, such as clicks, etc.
    events:{
      'click .tag':'inside',
    },
    initialize: function(){
      _.bindAll(this, 'render','inside'); // fixes loss of context for 'this' within methods

       this.render(); // not all views are self-rendering. This one is.
       this.model.fetch();
    },
    // `render()`: Function in charge of rendering the entire view in `this.el`. Needs to be manually called by the user.
    render: function(){                  
       console.log( this.model );   
    },  
    inside:function(e){  
    var short_by = e.currentTarget.innerText;     
    }  
  });      
   var coll = new C;
  // **listView instance**: Instantiate main app view.
  var listView = new ListView({model:coll});
})(jQuery);

1 个答案:

答案 0 :(得分:0)

解决方案:

1。)该集合包含一个' / json'的URL,它应重定向到包含您提供的json的URL。这是一个真正的工作网址吗?

2。)你已经覆盖了返回响应的解析方法"原样是#34;。为什么呢?

3。)你正在调用模型" fetch",但是模型没有定义url,你需要调用集合的fetch,并在集合中定义一个url。

4。)调用是异步的,您应该将一个监听器应用于集合"同步"的事件,然后调用渲染:this.listenTo(this.collection, "sync", this.render");然后调用集合&#34 ;取"方法

5.然后你可以通过调用.each()方法或toJSON()来从集合中获取原始json数据,或者使用_.template("标记)。 。",collection.toJSON())函数。