我对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);
答案 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())函数。