Closed. This question needs details or clarity。它当前不接受答案。
想改善这个问题吗?添加详细信息并通过editing this post阐明问题。
5个月前关闭。
总菜鸟。尝试扩展一些代码以使其更加灵活。我设法将需要的语句的“片段”放入数组中。但是,现在我想让语句运行,并且我不知道该如何整理并创建一个经过评估的语句。
尝试过
这应该可以解决问题。
但是,如果
然后是
想改善这个问题吗?添加详细信息并通过editing this post阐明问题。
5个月前关闭。
总菜鸟。尝试扩展一些代码以使其更加灵活。我设法将需要的语句的“片段”放入数组中。但是,现在我想让语句运行,并且我不知道该如何整理并创建一个经过评估的语句。
<div class="qvinsert" data-qvid="PQHxsX" data-app-ref="app1"></div>
var app1 = qlik.openApp('fe96772a-caa7-442d-a77f-ed68764942ec', config);
$(".qvinsert").each(function() {
var viz = {
v: $(this).data("qvid"),
a: $(this).data("appRef")
};
console.log(viz); //{v: "PQHxsX", a: "app1"}
app1.getObject(this, "PQHxsX") //the line I'd like to create. If I write it out like this it works.
尝试过
[viz.a].getObject(this,[viz.v])
之类的各种东西,但我觉得自己只是在黑暗中刺伤 最佳答案
在黑暗中刺伤确实不是编程的方法!
实际上,您离您并不遥远。 [viz.v]
有一些多余的括号(您已经在此处创建了一个单元素数组)—仅viz.v
已经是您想要该函数参数的字符串。
将字符串"app1"
(即viz.a
的值)转换为对app1
的实际引用需要花费一些额外的工作,但是由于所有全局变量都作为window
对象的属性而存在,因此更加容易。您可以使用类似数组的语法访问所述属性。
因此,再次说明,尽管仅将变量括在数组文字括号内是没有用的,但具有讽刺意味的是,它离解决方案也不远:
window[viz.a].getObject(this, viz.v);
这应该可以解决问题。
但是,如果
app1
不是全局变量,并且我们不能真正从您的问题中得知,那么您应该考虑将其放在可以按名称以相同方式索引的对象中:var apps = {
"app1": qlik.openApp('fe96772a-caa7-442d-a77f-ed68764942ec', config)
// can add more possibilities here!
};
然后是
apps[viz.a].getObject(this, viz.v);
。老实说,这会比较整齐。08-27 14:53