javascript - 从数组元素创建 js 语句
问题描述
总菜鸟。尝试扩展一些代码以使其更灵活。我已经设法将我需要的语句的“部分”放入一个数组中。但是现在我想让语句运行,我不知道如何分块并做出一个被评估的语句。
<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);
。老实说,这无论如何都会更整洁。
推荐阅读
- python - 从 Python 3 控制 Arduino 继电器
- angularjs - 如何在 $stateProvider.state 上创建我自己的属性
- python - 如何从 div 标签中获取文本
- javascript - 未捕获的 ReferenceError:未使用 React 和 babel 定义模块
- sapui5 - 如何正确使用新的异步片段加载
- r - dnorm() 如何在 sapply 循环中处理分位数向量
- c# - 复制到另一个文本文件时如何覆盖或跳过特定行
- r - 如何将一系列日期更改为一个日期 R?
- python - 我正在尝试使用 def 对性别 = 男性和性别 = 女性的数据框进行有条件的添加
- bing-maps - 有没有办法对 bingmap 的信息框关闭按钮进行编程?