鉴于以下coffeescript
class ModalController
constructor: (modalClass) ->
@modalClass = modalClass
@enableSelect2()
@clearSelectOptions()
enableSelect2: () ->
$('.select2-init').select2()
.on 'select2-open', (e) ->
console.log e
.on 'select2:selecting', (e) =>
console.log 'added'
@validatePresenceOf($(e.target))
我希望当我选择上面的代码时,特别是调用.on 'select2:selecting
的行应该触发,这不是下面代码片段中记录的情况。
我的理解基于select2 docs
如何解决这个问题?
在事件选择中可能出现错误,
以下coffeescript
enableSelect2: () ->
$('.select2-init').select2()
.on 'change', (event) =>
if event.added
@validatePresenceOf($(event.target))
.on 'select2:selecting', (e) =>
console.log "selecting"
.on 'select2:select', (e) =>
console.log "select"
.on 'select2-removed', (e) =>
@validatePresenceOf($(e.target))
产生以下内容,请注意没有日志声明(虽然我已经通过使用event.added
检查攻击了我正在寻找的验证。
模式select2:eventname
没有做任何事情,即没有记录,没有钩子。这很奇怪。我在互联网上找到的随机网站上找到了select2-eventname
模式。这对我来说是非常奇怪和令人不安的,这看起来像是一个简单的代码。
答案 0 :(得分:6)
您出现以使用Select2 3.x,但您正在引用Select2 4.0.0文档中的内容。
Select2 4.0.0文档:https://select2.github.io/
选择2 3.5.2文档:http://select2.github.io/select2/
主页上还有一个链接到Select2 3.5.2文档的链接。
您使用的select2-open
似乎正在运行且是3.5.2事件,但您也尝试使用select2:selecting
,这是一个4.0.0事件。 select2:selecting
的Select2 3.5.2事件为select2-selecting
(请注意-
而不是:
。)
查看事件文档时的其他显着变化
change
曾用于包含added
和removed
属性,用于检查添加和删除内容的时间。现在,您应该使用select2:select
事件来检查添加内容的时间,并使用select2:unselect
来查看删除内容的时间。select2-selecting
现在是select2:selecting
select2-removing
现在是select2:unselecting
select2-removed
现在是select2:unselect
select2-opening
现在是select2:opening
select2-open
现在是select2:open
答案 1 :(得分:0)
可能的拼写错误。应该是
.on'select2-selecting'...
而不是
.on'slect2:选择'...