所以我一直在努力爭取做到這一點。我正在構建一個動態表單生成器工具。其中一個功能是用戶應該能夠使用jQuery滑塊來選擇字體大小。我使用Underscore模板爲滑塊創建div。所以每次用戶選擇一個標籤輸入,這個下劃線模板被加載,我調用slider()fn來初始化它。這裏的是,因此,這是否Backbone和jQuery滑塊
UnderscoreTemplate
<!-- template for plain text inpt to be shown in form generate -->
<script type="text/template" id="text-generate-template">
<div class="row">
<div class="col-sm-10">
<input type="text" placeholder="Enter text here" class="label-name form-control" value="<%=model.get('label')%>">
</div>
<button type="button" class="close" id="remove-element" >×</button>
</div>
<div class="row col-sm-6" style="margin-top:10px">
<div id="slider-<%=model.cid%>"></div>
<small>Font Size: <%=model.get('fontSize')%>px </small>
</div>
</script>
按代碼ablove,每個動態加載元件具有一個唯一的ID的唯一滑塊的代碼的一部分。
的骨幹型從所謂的「元素」
var TextElement = Element.extend({
defaults:function(){
return _.extend({}, Element.prototype.defaults,{
name: 'PlainText',
generateTemplateType: 'text-generate-template',
previewTemplateType:'text-template',
textAlign: 'center'
});
}
});
視圖負責生成HTML基礎元件延伸。
var ElementView = Backbone.View.extend({
tagName: 'li',
events : {
},
initialize : function(){
this.listenTo(this.model,'change', this.render);
this.render();
},
render : function(){
var htmlContent = $('#'+this.model.get('generateTemplateType')).html();
var content = _.template(htmlContent, {elementType : elementTypes, model : this.model});
this.$el.html(content);
me = this;
if(this.model.get('name') == 'PlainText'){
this.$el.find('#slider-'+this.model.cid).slider({
min: 10,
max:40,
step: 1,
value:me.model.get('fontSize') > 9 ? me.model.get('fontSize') : 24,
change: function(event, ui) {
me.slide(event, ui.value);
}
});
}
return this;
},
slide: function(event, index){
console.log("the models id in slide function -> "+this.model.cid);
this.model.set('fontSize', index);
}
});
因此,我在這裏做的是,每次我檢測到更改後,我將此模型的fontSize更新爲通過Slider傳入的新值。
此模型所屬的集合可以識別這種變化並將其自行重新渲染。
當頁面上只有一個這樣的元素時,一切正常。當用戶添加多個元素並嘗試更改每個項目的字體大小時,只更改最後一個元素的字體大小。無論我是否滑動第一個,第二個或第三個元素,它都會將更改設置爲集合中的最後一個模型,並且最後一個模型會使用不正確的字體大小值重新渲染。
我試着在幻燈片函數中記錄模型的控制檯的id,無論我使用哪個滑塊,它總是返回最後的模型ID。
我在做什麼錯在這裏?