TL; DR
Не использовать:
qlik.currApp()
Использовать
qlik.currApp(this)
, чтобы поддержка расширений использовалась в Mashups с несколькими приложениями.
Подробное объяснение
Если вам нужно вызывать функции в приложении за объектом расширения, то вы, вероятно, используете qlik.currApp()
;
qlik.currApp()
, чтобы получить текущее приложениеэто загружено.Это нормально, если в мэшап загружается только одно приложение.Но если есть несколько приложений, qlik.currApp () просто дает вам первое приложение, которое оно загрузило.
Согласно документации Qlik Sense о методе currApp :
qlik.currApp (ссылка)
Получает ссылкук текущему приложению.Используйте метод currApp в расширении, чтобы получить ссылку на приложение, отображаемое в данный момент.
Изображение у вас есть два приложения: A и B. A загружается первым.Затем вы включаете также объект из приложения B в Mashup.Но тип объекта - Расширение, и это расширение использует qlik.currApp()
, вероятно, этот объект не будет работать должным образом.Это расширение будет вызывать функции в приложении A, даже если оно из приложения B.
Вы можете указать Qlik, на какое приложение вы хотите сослаться.Для этого вам нужна ссылка на экземпляр расширения.Вы получаете его в качестве ссылки this внутри вашего метода рисования в дополнительном коде:
paint: function(§element, layout){
var app = qlik.currApp(this);
// [...]
}
Если у вас есть другое замыкание внутри функции рисования, вам нужно сохранить ссылку this
.Если нет, ссылка this перезаписывается внутренним объектом функции.Распространенным случаем является сохранение ссылки this
на that
:
paint: function(§element, layout){
var that = this;
loader.load(assets, function(){
var app = qlik.currApp(that);
// [...]
});
}