Как получить данные из поля в Qlik Sense 3.0?

Я работаю над extesion для приложения Qlik Sense 3.0.

Я сделал ту же тему в сообществе qlik, но не получил ответа.

https://community.qlik.com/thread/231938

Надеюсь, кто-нибудь здесь сможет мне помочь.

ОК. У меня есть функция:

function whenMonthsSelected(fieldName){  

    var field = app.field(fieldName);  

    var fieldData = field.getData();  

    console.log("fieldData");  
    console.log(fieldData);  

    console.log(fieldData.rows.length);  
} 

И когда я выполняю его, я получаю в браузере:

Введите описание изображения здесь

В результате у меня есть массив с 0 элементами.

И вот мой вопрос…
Что нужно сделать, чтобы получить массив с 12 строками?

В этом массиве хранятся 12 строк (информация о месяцах). И я могу получить данные, нажав на дерево. Но в консоли я всегда получаю массив с 0 элементом.

Спасибо.

2 ответа

  1. Необходимо выполнить привязку к событию OnData. Данные загружаются асинхронно в коллекцию rows. В следующем примере typescript показана идея.

    getField(field: string): Promise<any> {
            let self = this.app;
            return new Promise(function (resolve, reject) {
                try {                    
                    let reply: any;
    
                    let listener = function () {
                        self.field(field).OnData.unbind(listener); 
                        resolve(reply.rows);
                    }
    
                    self.field(field).OnData.bind(listener); 
                    reply = self.field(field).getData();
                } catch (ex) {
                    reject(ex);
                }
            }); 
        }
    
  2. Похоже, этот код сделает то, что вам нужно:

    var fieldValues = app.field("SomeFieldName").getData();
    fieldValues.OnData.bind(function () {
        console.info("waitedForData>>>",fieldValues.rows);
    });