我想在创建select2时传递自定义属性。示例(我的自定义属性为myFilterEnabled
):
$('#mySelId2').select2({
myFilterEnabled: false, //Pass my initial state
query: function(query) {
var res = {
results: CityFilter.cities
};
query.callback(res);
}
});
并在查询或渲染函数中使用它。像:
$('#mySelId2').select2({
myFilterEnabled: false,
query: function(query) {
var fltEnabled = this.myFilterEnabled; //Read current state
var res = {
results: fltEnabled ? [] : CityFilter.cities
};
query.callback(res);
}
});
这样,变量有一个初始状态。但是,它可以在外部进行更改,我想在每次重新渲染/查询期间检查该状态。
编辑:似乎我在发帖前犯了一个错误。上面的代码似乎工作。我打算添加一个常见的前缀,例如' my'或者' myProj'这样它就不会与select2本身的任何变量发生冲突。
Edit2:如上所述,传递初始状态和读取当前状态正在起作用。我仍然需要一种从外部改变这种状态的方法。如果select2没有方法,我可以在元素上设置数据属性。
答案 0 :(得分:0)
这是我想要的完整周期:
设置自定义状态 - >在查询/渲染期间读取自定义状态 - >更改用户操作的自定义状态 - >触发器重新渲染状态更改
这就是我现在设法做到的:
1)我可以在设置select2
$('#mySelId2').select2({
myFilterEnabled: false,
query: function(query){ ...
2)我能够在回调中读取自定义参数
this.myFilterEnabled
3)我可以从外部设置自定义参数
$('#s2id_<myId>').data('select2').opts.myFilterEnabled = true;
3)如上所示设置属性后,我想要select2
重新应用query
功能。我可以trigger
change
开启
input.select2-input
。但是,有一个检查以防止重新执行
查询时文本保持不变。所以,我更进一步
并使用&#39; true&#39;来调用updateResults
函数。论点。那
强制updateResult
继续再次运行query
。例如:
$('#s2id_<myId>').data('select2').updateResults(true);