我有一个json文件tabs.json,其中有格式
{
"test":[
{
"displayName": "1",
"clickEvent": "open()",
"hiddenProperty": "dashboard.privilege.ADDRESS_BOOK_ADMINISTRATE",
"value": false
},
{
"displayName": "2",
"clickEvent": "route()",
"hiddenProperty": "dashboard.privilege.ADDRESS",
"value": false
},
]
}
在此文件open()中,route()是test.component.ts文件中存在的单击事件...要调用它们,我正在使用
var data = tabs.json;
data.test.forEach((tab) => {
eval('this.' + tab.clickEvent);
});
这工作得很好,可以转到函数open(),route()等
类似地,“ dashd.privilege.ADDRESS_BOOK_ADMINISTRATE”,“ dashboard.privilege.ADDRESS”等“ hiddenProperty”的值也是test.component.ts文件中的变量。
我正在尝试获取它们的价值
尝试过 示例1:
var data = tabs.json;
data.test.forEach((tab) => {
eval('this.' + tab.hiddenProperty);
});
结果:无法读取未定义的属性“仪表板”
示例2:
var data = tabs.json;
data.test.forEach((tab) => {
eval(tab.hiddenProperty);
});
结果:未定义仪表板
Example3:
var data = tabs.json;
data.test.forEach((tab) => {
eval.call(this, tab.hiddenProperty);
});
结果:未定义仪表板
您能建议我如何访问变量中存在的变量的值
答案 0 :(得分:0)
Json是一种数据格式,它不包含可执行代码,您只需在json中定义此结构即可:
"test":[
{
"displayName": "1",
"clickEvent": "0", // 0 for open and 1 for route
"hiddenProperty": "0"// same thing 0 for one ts variable and 1 for the other,
"value": false
}
}
然后您可以将此代码放在ts文件中:
data.test.forEach((tab) => {
if (tab.clickEvent){
this.route()
}else{
this.open()
}
});
希望变量对我有帮助;)