在使用构造函数的onItemAdd
参数(https://github.com/brianreavis/selectize.js/blob/master/docs/usage.md#callbacks)时,我遇到了selectize.js的问题。
让我们说我有一个实例将持有并管理选择实例的类。我想动态添加选项,并且只要选择了一个选项,就会调用我的类的方法。在下面的代码中,未提及<select id="#select"></select>
但确实存在。
function Class() {
var self = this;
// create the selectize instance
$('#select1').selectize({
onItemAdd: self._func
});
var select = $('#select1')[0].selectize;
select.addOption({value: 'hello', text: 'Hello'});
select.addOption({value: 'world', text: 'World'});
self._func = function (value) {
alert(value);
}
}
$(function() {
new Class();
});
令人惊讶的是,在选择项目时,永远不会调用对象方法self._func
。但是,如果我用onItemAdd: function (value) { self._func(value); }
之类的内容替换它,则会按预期调用对象方法self._func
!
证明问题的JsFiddle:https://jsfiddle.net/qDL37/1/
任何可以解释这种行为的原因?
答案 0 :(得分:1)
好吧,当我理解原因时,我刚刚写完帖子。在上面的示例中,创建选择实例时,self._func
仍未定义。
要解决此问题,只需在创建选择性实例之前声明_func
。