我第一次玩Backbone.js,並且遇到了一些麻煩。 我最初的意圖是顯示某張幻燈片的內容,但我已經回到'只是試圖用.text()方法顯示任何內容「。.render函數正在運行,但沒有設置任何東西
我的渲染方法get的調用,我可以看到在日誌中,但'currentslide'id沒有填充。有人知道我在這裏忽略了什麼愚蠢的東西嗎?
看到Backbone代碼似乎沒問題,它可能是一個jQuery相關的問題。我對他們都很新鮮。
提前許多感謝,
迪特
這是我的html:
<!doctype html>
<head>
<meta charset="utf-8">
<title>Presentation</title>
<script src="js/vendor/jquery-1.5.1.min.js"></script>
<script src="js/vendor/underscore.js"></script>
<script src="js/vendor/backbone.js"></script>
<script src="js/slides.js"></script>
</head>
<body>
<div id="container">
<div id="slideshow">
<h2 id="currentslide"></h2>
</div>
</div>
</body>
這是我的骨幹到目前爲止的代碼:
(function($) {
window.Slide = Backbone.Model.extend({
content: "Testcontent",
initialize: function() {
console.log('Slide created');
}
});
window.Slidedeck = Backbone.Collection.extend({
model: Slide,
});
window.Slideshow = Backbone.View.extend({
el: $('#slideshow'),
currentSlide: 0,
initialize: function() {
_.bindAll(this, 'render');
},
render: function(){
console.log('Rendering');
$('#currentslide').text('This aint even working darned.');
return this;
}
});
var slidedeck = new Slidedeck([
new Slide({
content: "Slide 1",
}),
new Slide({
content: "Slide 2",
}),
]);
var slideshow = new Slideshow({
collection: slidedeck,
});
slideshow.render();
})(jQuery);
編輯: 我想這提議
$(slideshow.render().el).appendTo('body');
更換的代碼的最後一行但是這似乎並不很遺憾工作。
奇怪的是,我有另一塊代碼與render(),其中.text()完美的作品。
render: function(){
$('#actionValue').text(this.model.get('value'));
return this;
}
由於render()代碼在兩段代碼上運行,我認爲它與綁定任何東西無關。 但由於某些原因,後者的.text()就好了,第一個沒有。
kpeel,你是絕對的生命保護者。我花了幾個小時看着那小小的代碼,把我的頭髮拉出來:-)數字是一個'文檔準備好'的東西。 謝謝! – Dieter 2012-01-29 19:16:52