QML ListModel в строку

У меня есть ListModel, заполненный вот так:

Component.onCompleted:{
  fillListModel();
}

ListModel{
  id:listModel;
}
function fillListModel(){
  for(var i=0; i<2; i++)
    listModel.append({"aKey": "aKey"+i})
}

ComboBox{
  ...
  model:listModel  //each element of the model appears only one time
}

Я хотел бы сделать строку из этой модели, поэтому делаю:

function listModelToString(){
  var datamodel = []
  for (var i = 0; i < listModel.count; ++i){
    datamodel.push(listModel.get(i))
  }
  var keysList = JSON.stringify(datamodel)
  console.info(keysList)
}

Получаю такой результат:

[{"aKey":"aKey0","aKey":"aKey0"},{"aKey":"aKey1","aKey":"aKey1"}]

Почему он помещает каждую пару (aKey, aKey0), (aKey, aKey1) в двойные? Я могу ездить на "дополнительных" значениях, но мне интересно, почему я получаю это вместо того, чтобы просто:

[{"aKey":"aKey0"},{"aKey":"aKey1"}]

Спасибо.

Обновлено: Минимальный код:

import QtQuick 2.6
import QtQuick.Controls 1.4
import QtQuick.Controls.Styles 1.4
import QtQuick.Window 2.2

ApplicationWindow {
  id: mainWindow
  width: 400
  height: 400
  visible: true

  Component.onCompleted:{
    fillListModel();
  }

  ListModel{
    id:listModel;
  }

  function fillListModel(){
    for(var i=0; i<2; i++)
      listModel.append({"aKey": "aKey"+i})
    listModelToString()
  }

  function listModelToString(){
    var datamodel = []
    for (var i = 0; i < listModel.count; ++i)
      datamodel.push(listModel.get(i))

    var keysList = JSON.stringify(datamodel)
    console.info(keysList)  //output [{"aKey":"aKey0","aKey":"aKey0"},{"aKey":"aKey1","aKey":"aKey1"}]
  }

  ComboBox{
    model:listModel  //each element of the model appears only one time
  }
}

Получаю: qml: [{"aKey":"aKey0"},{"aKey":"aKey1"}], мне кажется, вы дважды вызывали функцию fillListModel или что-то подобное, вы должны предоставить минимальный воспроизводимый пример

eyllanesc 04.04.2018 15:42

Спасибо, но это действительно минимум, который я могу предоставить, все это в элементе, а listModel используется для ComboBox (я обновил свой пост). Но если у вас будет хороший результат, я проверю на своей стороне. А функция fillListModel вызывается только один раз.

SteveTJS 04.04.2018 16:00

если он предоставляет минимальный воспроизводимый пример, который я мог бы скопировать и выполнить напрямую, он минимальный, но не полный, но я все равно даю тот же ответ.

eyllanesc 04.04.2018 16:02

О'кей, я обновился. Я использую Qt 5.9.0.

SteveTJS 04.04.2018 16:15

Продолжаю получать правильный результат, тестирую с Qt 5.10.1 на Linux

eyllanesc 04.04.2018 16:18

Хорошо, такой же код, разные результаты, похоже, проблема Qt.

SteveTJS 04.04.2018 16:20
Как сделать HTTP-запрос в Javascript?
Как сделать HTTP-запрос в Javascript?
В JavaScript вы можете сделать HTTP-запрос, используя объект XMLHttpRequest или более новый API fetch. Вот пример для обоих методов:
2
6
1 113
0

Другие вопросы по теме