例如,我有一个班级:
classA.js
$(document).ready(function() {
select2_scroll('element_name_id')
});
从
调用一个函数classB.js
function select2_scroll(elementId, queryString) {
resource_url: 'something/';
$('#' + elementId).select2({
allowClear: true,
ajax: {
url: resource_url,
dataType: 'json',
type: 'GET',
quietMillis: 100,
data: function (term, page) {
return {
search_term: term,
page: page
};
},
results: function (data, page) {
var more = (page * PAGE_LIMIT) < data.total_results;
return { results: data.resource, more: more };
}
},
formatResult: resourceName,
formatSelection: resourceName,
});
}
function resourceName(resource) {
var format = '<div>' + resource.name + '</div>' +
'<input type="hidden" name="' + elementId + '_id" value="' + resource.id + '"/>';
return format;
}
如何避免使用全局变量传递elementId变量?我无法直接调用resourceName并通过调用resourceName(resource,elementId)传递elementId。
我是否遗漏了Select2组件中的内容?
答案 0 :(得分:0)
您可以尝试以下方式:
formatResult: ()=>{
resourceName(resource, elementId);
},
formatSelection: ()=>{
resourceName(resource, elementId);
},
答案 1 :(得分:0)
在&#34;结果&#34;中添加您的元素ID返回
results: function (data, page) {
var more = (page * PAGE_LIMIT) < data.total_results;
return { results: data.resource, more: more, elementId: elementId };
}
并在你的功能中使用它:
var format = '<div>' + resource.name + '</div>' +
'<input type="hidden" name="' + resource.elementId + '_id" value="' + resource.id + '"/>';
如果这适合您,请告诉我。我没有用你的例子测试它
答案 2 :(得分:0)
我找到了解决问题的方法。我可以做到
...
formatResult: function(resource) {
return resourceName(resource, elementId)
},
formatSelection: function(resource) {
return resourceName(resource, elementId)
},
....
谢谢!