我正在尝试将Select2整合到Marionette ItemView中。
问题:我想用已选择的值初始化Select2,但所选元素仍然在下拉列表中可用。如果我清除该框,然后从下拉列表中手动重新选择项目,则可以从下拉列表中正确删除这些项目。
使用Javascript:
View.Profile = Marionette.ItemView.extend({
template: profileTpl,
onShow: function(){
var $select = this.$("#categories"); // grabs the element for Select2
$select.select2(); // build the Select2 element
$select.select2("val", ["american", "french", "italian"]); // select values
}
HTML:
<select id="categories" data-placeholder="Add a category..." multiple class="form-control" tabindex="8">
<option></option>
<option value="american">American</option>
<option value="french">French</option>
<option value="italian">Italian</option>
<option value="indian">Indian</option>
</select>
我可以在单个html示例页面上执行此操作,没有任何问题。
使用Marionette的onShow,“标签”元素在Select2框中正确显示,但是当我单击该框以选择不同的选项时,所有选项仍然可用。
我怀疑有一些事件未正确附加到Select2元素,因为我在onShow事件中附加Select2元素的方式。
答案 0 :(得分:2)
Here正在解决您的问题。
只有一个与您的代码相关的注释。这是一个很好的做法,在访问视图元素时,使用this.$el.find('selector')
引用而不是通过jquery $('selector')
查询它。
你可以做得更短,如this.$('selector')
。