我的扩展程序无法在从多个应用程序加载对象的混搭中使用。
当我的扩展程序来自Qlik Sense首先加载的应用程序时,它似乎起作用。但是,如果我的扩展程序在两个不同的应用程序中,则其中一个有效,而另一个无效。
答案 0 :(得分:1)
请勿使用:
qlik.currApp()
使用
qlik.currApp(this)
使您的扩展支持在具有多个应用的混搭中使用。
如果您需要在扩展对象后面的应用程序上调用函数,则可能使用qlik.currApp()
;
qlik.currApp()
为您提供当前已加载的应用程序。如果仅将一个应用程序加载到混搭中,那就很好。但是,如果有多个应用程序,则qlik.currApp()只会为您提供第一个已加载的应用程序。
根据Qlik Sense Documentation on the currApp method:
qlik.currApp(参考)
获取对当前应用程序的引用。在 扩展程序以获得对当前显示的应用程序的引用。
图像有两个应用程序:A和B。首先加载A。然后,您还将App B中的对象包含到Mashup中。但是对象的类型是扩展名,并且该扩展名使用qlik.currApp()
,很可能该对象无法正常工作。该扩展将调用应用A上的函数,即使它来自应用B。
您可以告诉Qlik您要引用哪个应用程序。为此,您需要引用扩展实例。您可以在扩展代码中的paint方法中将其作为此引用:
paint: function(§element, layout){
var app = qlik.currApp(this);
// [...]
}
如果paint函数内部还有另一个闭包,则需要保存this
引用。如果不是,此引用将被内部函数对象覆盖。常见的情况是将this
引用保存到that
:
paint: function(§element, layout){
var that = this;
loader.load(assets, function(){
var app = qlik.currApp(that);
// [...]
});
}