$('#placeSelect').select2({
width: '100%',
allowClear: true,
multiple: true,
maximumSelectionSize: 1,
placeholder: "Click here and start typing to search.",
data: function(query) {
queryData{!randomJsIden}(query);
},
matcher: function (term, text) {if (text.toUpperCase().indexOf(term.toUpperCase()) == 0){return true;}return false;}
});
function queryData{!randomJsIden}(query){
Visualforce.remoting.Manager.invokeAction(
'{!$RemoteAction.AutoCompleteV2_Con.getData}','{!sObjVal}','{!labelFieldVar}','{!valueFieldVar}',query.term,
function(result, event){
//if success
if(event.status){
var data = {results:[{ id: 1, text: "Ford" },
{ id: 2, text: "Dodge" },
{ id: 3, text: "Mercedes" },
{ id: 4, text: "Jaguar" }]}
query.callback( data);
}
},
{escape: true}
);
}
</script>
如何在select2中将查询回调数据初始化为data属性。 我无法直接使用数据。在上面的示例中,我使用的是样本数据。
query : function(query){
queryData{!randomJsIden}(query);
}
我想用这样的数据属性替换它:下面的一个不起作用
data : function(query){
queryData{!randomJsIden}(query);
}
这是小提琴:
http://jsfiddle.net/Lnf8j/303/
让我知道你的任何想法
答案 0 :(得分:1)
您的代码中存在几个问题
function queryData{!randomJsIden}(query)
中的保留符号符号,而是将其命名为function queryData(query){ ... }
如果您为select2的数据添加回调,则需要返回从queryData()
函数构造的数据。
data: function(query) {
return queryData(query);
},
function queryData(query){
...
return data;
}
如果我没有错,数据会通过select2
内的异步调用来源queryData()
,这意味着数据会在不可预测的时间返回,因此您需要限制用户访问select2
组件,直到数据被提供给它。
这意味着您需要预取数据或禁用select2
字段,直到从远程调用返回数据。