Im Backbone Backbone(不要恨我)但是我拉着我的頭髮試圖做一件非常簡單的事情。backbonejs初學者問題 - 獲取和顯示json數據
林加載JSON文件(正常,因爲我可以看到它加載的螢火),我只是想撤出它的一些信息純粹是爲了測試(作爲我的第一個骨幹代碼)
但是,我不能得到這工作和結束與一個空白鋰標籤(代碼如下)
<ul id="phones"></ul>
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/underscore.js/1.4.2/underscore-min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/backbone.js/0.9.2/backbone-min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/handlebars.js/1.0.rc.1/handlebars.min.js"></script>
<script id="foo" type="text/template">
<li><%= name %></li>
</script>
<script>
var Phones = Backbone.Collection.extend({
url:'http://backbone.local/phones/phones.json'
})
var PhonesView = Backbone.View.extend({
el:'#phones',
initialize:function(){
this.collection = new Phones();
this.collection.fetch();
this.render();
},
template:_.template($('#foo').html()),
render:function(){
var foo = this.collection.toJSON();
$(this.el).html(this.template(foo));
return this;
}
})
var phonesView = new PhonesView();
</script>
任何指標極大讚賞。
乾杯,
更新1
我認爲這可能是由於取爲異步,所以我叫呈現如下取的成功回調。該火災的console.log不錯,但仍然呈現的HTML沒有JSON數據(我也改爲使用把手)
<script>
var Phones = Backbone.Collection.extend({
url:'http://backbone.local/phones/phones.json'
})
var PhonesView = Backbone.View.extend({
el:'#phones',
initialize:function(){
var self = this;
this.collection = new Phones();
this.collection.fetch({
success:function(){
console.log('json loaded');
self.render();
}
});
},
template: Handlebars.compile('<li>sdsadsadsadsad {{name}} dsfcdfd</li>'),
render:function(){
var foo = this.collection.toJSON();
$(this.el).html(this.template(foo));
return this;
}
})
var phonesView = new PhonesView();
</script>
一些解釋可能是有用的。在'initialize'中綁定''add''可能會更有意義,'fetch'會觸發''reset''事件,因此綁定到該事件而不是顯式的成功處理將更爲常見。你可以給'each'提供一個context參數,所以你不需要用'_.bind'創建一個額外的函數:'this.collection.each(this.onAdd,this)' –