2017-07-31 118 views
0

我想在创建select2时传递自定义属性。示例(我自定义属性为myFilterEnabled):select2:是否可以传递自定义输入并在方法中访问

$('#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本身的任何变量冲突。

编辑2:如前所述,传递初始状态和读取当前状态正在工作。我仍然需要从外部改变这种状态的方法。如果select2没有可以在元素上设置数据属性的方法。

+2

为什么不设置元素它自己的数据属性,并使用('$(元素)。数据(“myFilterEnabled”,“一些价值”)'和'获得$(元素) .data('myFilterEnabled')') –

+0

图书馆如何接受您的自定义属性? – Sankar

+0

@maximusツ谢谢。我会尝试的。 – Teddy

回答

0

这是我想要的完整周期:

设置自定义状态 - >查看自定义状态查询时/渲染 - >用户行为变化的自定义状态 - >触发状态变化重新渲染

这是我成功地做到这一点,截至目前:

1)我可以通过在选项自定义参数,同时建立select2

$('#mySelId2').select2({ 
      myFilterEnabled: false, 
      query: function(query){ ... 

2)我能为

this.myFilterEnabled 

3回调中读取自定义参数)我可以设置自定义参数从外面

$('#s2id_<myId>').data('select2').opts.myFilterEnabled = true; 

3)设置该属性为后如上所示,我想select2到 重新申请query功能。我可以triggerchangeinput.select2-input。但是,在文本保持不变的情况下,有一项检查可以防止查询的重新执行 。所以,我更进一步 并用'true'参数调用updateResults函数。 强制updateResult继续再次运行query。例如:

$('#s2id_<myId>').data('select2').updateResults(true); 
相关问题