我有dropDown元素,它采用格式
的选项 ctrlOptions:{0:'String',1:'int'}
除了简单的数据类型,我有用户定义的数据类型,因此我想填充这个动态。所以我使用循环和连接
var dropDown = "{"
for(var i=0;i<dataTypesList.length;i++){
if(i == dataTypesList.length-1){
dropDown = dropDown + i + ":" + "'" + dataTypesList[i].Name + "'}";
}else{
dropDown = dropDown + i + ":" + "'" + dataTypesList[i].Name+ "'" + ",";
}}
这产生了所需格式的选项,但是附带引号,如
ctrlOptions:“{0:'String',1:'int'}”
我想删除我试过的双引号替换它似乎没有帮助。我怎样才能实现这一点,我可以用其他任何方式。
答案 0 :(得分:1)
你想要创造的是一个对象&amp;不是一个字符串。
从您的代码中疯狂猜测,输入 dataTypesList 看起来像这样:
dataTypesList = [{Name:'String'}, {Name:'int'}]
您应该使用:
var dropDown = {};
for(var i=0;i<dataTypesList.length;i++)
dropDown[i] = dataTypesList[i].Name;
然后输出是一个对象:
{0: "String", 1: "int"}
答案 1 :(得分:0)
您可以使用JSON.parse将选项字符串从字符串json转换为对象json:
使用您的代码(稍加修改):
var dropDown = "{"
for(var i = 0; i < dataTypesList.length; i++)
{
if(i === dataTypesList.length - 1)
{
dropDown += i + ":'" + dataTypesList[i].Name + "'}";
}
else
{
dropDown += i + ":'" + dataTypesList[i].Name + "',";
}
}
// later...
ctrlOptions: JSON.parse(dropDown);
验证目标浏览器是否兼容:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse
如果没有,有些库与旧浏览器兼容,可以做同样的事情。作者推荐JSON2用于过时的浏览器:https://github.com/douglascrockford/JSON-js