【发布时间】:2014-10-21 10:56:35
【问题描述】:
好的,我知道这对某些人来说可能很简单,但我尝试了几个小时,直到现在都没有成功。
如果我在这个数组中有数据
var tDataValues = {
id: "TenantID",
text: "FullName",
username: "Username",
cnic: 'CNIC'
}
我将这个变量发送给函数
commonSelect2Templating(selector,url,tDataValues,minInputLength,placeholder);
注意:我正在使用 Jquery Select2(如果它可以帮助我理解问题,请分享。)
然后在结果部分的那个函数中我试图分配值
results: function(data, page) {
var newData = [];
var length = data.length + 1;
for(var i = 0; i<=length; i++){
}
$.each(data, function (index,value) {
newData.push({
id: value[tDataValues.id], //id part present in data
text: value[tDataValues.text] //string to be displayed
});
});
return { results: newData };
}
这是来自服务器的数据:
[{"TenantID":"13","FullName":"Rameez Hassana","Username":"Rameez","CNIC":"16141-6321136-1"},{"TenantID":"14","FullName":"Syed Haider Hassan","Username":"pakistanihaider","CNIC":"17301-5856870-1"},{"TenantID":"15","FullName":"Demo Tenant No 1","Username":"tn1","CNIC":"15165-6156685-6"}]
解决问题: 现在所有的魔法都在这里发生。
$.each(data, function (index,value) {
newData.push({
id: value[tDataValues.id], //id part present in data
text: value[tDataValues.text] //string to be displayed
});
它告诉代码哪个是 id 哪个是文本,它工作得非常好。
现在这里的问题是我要创建的功能是 select2 的通用功能,
如果我有更多来自 db 的值,就像现在我从数据库中获取如何进行循环并将这些值一一设置到其适当的上下文中一样。
例如
tDataValues 持有 fieldName cnic 并且服务器正在发送 fieldName CNIC
那么如何创建一个循环,如果 cnic 两者都存在,那么它应该简单地分配,
我可以手动完成
newData.push({
cnic: value[tDataValues.cnic]
});
但是像这样它不能是一个通用的功能。
我不能简单地提出如何实现这一点的逻辑。确实尝试了几个小时,但到目前为止没有成功:(
【问题讨论】:
-
tDataValues是一个对象,而不是一个数组。
标签: javascript jquery arrays jquery-select2