Selectize.js:给定类方法时未调用onItemAdd属性

时间:2015-03-09 22:12:47

标签: javascript jquery selectize.js

在使用构造函数的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/

任何可以解释这种行为的原因?

1 个答案:

答案 0 :(得分:1)

好吧,当我理解原因时,我刚刚写完帖子。在上面的示例中,创建选择实例时,self._func仍未定义。

要解决此问题,只需在创建选择性实例之前声明_func