使用Backbone.Marionette选择2:未隐藏预选值

时间:2014-10-07 17:25:37

标签: javascript marionette jquery-select2 backbone-views backbone-events

我正在尝试将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元素的方式。

1 个答案:

答案 0 :(得分:2)

Here正在解决您的问题。

只有一个与您的代码相关的注释。这是一个很好的做法,在访问视图元素时,使用this.$el.find('selector')引用而不是通过jquery $('selector')查询它。

你可以做得更短,如this.$('selector')