2016-09-29 3 views
0

Я работаю над расширением для приложения Qlik Sense 3.0.Как получить данные из поля в 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); 
} 

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

enter image description here

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

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

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

Спасибо.

+0

Вы пытались закрыть и повторно открыть QS? –

+0

Похоже, что строки не загружаются с момента вашего console.log. Вам нужно получить к ним доступ позже. –

+0

Как Роланд предложил попробовать и получить данные с обещанием. Что-то вроде: 'field.getData(). Then (function (fieldData) { console.log (fieldData.rows.length) });' –

ответ

0

Вам необходимо привязать к событию OnData. Данные загружаются асинхронно в коллекцию строк. Следующий пример машинописного текста показывает эту идею.

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); 
      } 
     }); 
    } 
+0

Обратите внимание, что по умолчанию вы будете ограничены первыми 200 строками. Параметр количества возвращаемых строк. См. Документацию. Все еще пытаюсь понять, как на странице. Функция getMoreData() для меня сейчас не работает. – maxim1500

0

Похоже, этот код будет делать то, что вам нужно:

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

Попробуйте объяснить, почему это подходящее решение – Mawcel

Смежные вопросы