【问题标题】:selection object as callback parameter选择对象作为回调参数
【发布时间】:2015-05-27 15:18:57
【问题描述】:
我正在尝试使用 select2 jquery 插件,为了格式化结果,我发现了 templateResult 选项,可以像这样使用:
$(".my-select").select2({
templateResult: function (obj) {
//templating
}
});
我想知道回调作为参数接受的那个对象的结构和方法,但我找不到任何关于它的文档。
它是如何工作的?
【问题讨论】:
标签:
jquery-select2
jquery-select2-4
【解决方案1】:
传递给templateResult 和templateSelection 等函数的对象参数称为数据对象。这些是 <option> 标签的内部表示,由 Select2 构造。
对于带有<option> 和/或<optgroup> 标记的<select>(无特殊数据适配器),对象将具有以下自动生成的属性
-
id(可选):<option> 标签上的value 属性(如果没有value,则为文本)。 <optgroup> 标记上不存在此选项,因为它们无法被选中。
-
text:包含在<option> 标记中的文本,或<optgroup> 的label 属性。
-
element:表示<option> 或<optgroup> 标签的DOM 元素,可用于检索元素的属性(使用jQuery 或vanilla JavaScript)。
-
children(可选):任何嵌套的<option> 标签,当数据对象表示<optgroup> 时使用。
对于使用data 对象初始化的 Select2 实例,该对象应该是一个选项数组,每个数据对象都将匹配通过该数组传入的数据对象。此外,它们将具有一个 element 属性,该属性引用 Select2 用来管理它的自动生成的 <option>。
当 Select2 与 AJAX 等远程数据源一起使用时,预计会传回与此类似的数据对象(可能带有其他数据)。这些对象将被规范化(text 和 id 被强制为字符串)并像往常一样传递给模板函数。
这些相同的数据对象是通过select2:select、select2:unselect 和相关的 DOM 事件传回的,这些事件允许您引用已选择或未选择的数据对象。