0
我昨天開始使用Backbone.js,我不知道爲什麼模板沒有顯示,即使我可以看到該部分被解析。骨幹:模板不顯示
這是我的模板:
<script type="text/template" id="area-template">
<div id="area">
<label for="alto">Alto</label>
<input id="alto" name="alto" value=""/>
<label for="ancho">Ancho</label>
<input id="ancho" name="ancho" value=""/>
</div>
<div id="resultado" style="margin-top: 2em">
El área de un rectángulo de alto <%-alto %> y ancho <%- ancho %> es <b><%- area %></b>
</div>
</script>
這是我的骨幹代碼:
<script type="text/javascript">
var Rectangulo = Backbone.Model.extend({
defaults: {
alto: 4,
ancho: 3
},
area: function() {
return this.get('alto') * this.get('ancho');
},
toTemplateJSON: function() {
var json = this.toJSON();
json.area = this.area();
return json;
}
});
var Vista = Backbone.View.extend({
el: '#area',
events: {
"change input[name='alto']": 'onChangeAlto',
"change input[name='ancho']": 'onChangeAncho'
},
template: _.template($('#area-template').html()),
initialize: function() {
_.bindAll(this, 'render', 'onChangeAlto', 'onChangeAncho');
this.model = new Rectangulo();
this.model.on('change', this.render);
this.render();
},
onChangeAlto: function() {
var v = parseInt($("input[name='alto']", this.el).val());
this.model.set('alto', v);
},
onChangeAncho: function() {
var v = parseInt($("input[name='ancho']", this.el).val());
this.model.set('ancho', v);
},
render: function() {
$("input[name='alto']").val(this.model.get('alto'));
$("input[name='ancho']").val(this.model.get('ancho'));
this.$el.html(this.template(this.model.toTemplateJSON()));
}
});
var v = new Vista();
</script>
我沒有得到任何錯誤,只是一個空白頁。如果我改變<%- alto %>
到< %- undefinedOne %>
破壞模板(例如我得到在控制檯(ReferenceError: undefinedOne is not defined
)的錯誤,但爲什麼沒有被繪製HTML
不要迂腐,但具有相同'id'屬性在兩個'DOM'元素你的答案的結果。 – fbynite
是的。感謝您指出了這一點。我沒有注意到OP在他的模板中也有div#區域,應該刪除。 http://jsfiddle.net/sbjaz/15/ –