Комментарии (8)
Подтупливаем....
Иногда бывает какая то простая задача, над которой ты сидишь по пол дня и не сможешь её решить, а ответ оказывается рядом.
Пример: Есть JSON из которого мы сделали объект:
TypeError: Property 'forEach' of object [object Object] is not a function
Тобиж в именнованных объектах у нас не работает метод forEach так же как и обрашение по порядку, тоесть вариант object[0] и так далее не проходит. Что же делать? Решение вот такое нашёл. Работает, эффективность не проверял.
Пример: Есть JSON из которого мы сделали объект:
Код QML:
Тут всё просто, но ветки(?) или как там его у JSON`а именованные. Короче говоря языком PHP вместо этого:
var object = JSON.parse(answer);
Код PHP:
Мы имеем:
answer[] = 0; answer[] = 1; answer[] = 2
Код PHP:
И при попытке перебрать все объекты в QML через forEach мы влетаем в весёлую ошибку:
answer["zero"] = 0; answer["one"] = 1; answer["two"] = 2
TypeError: Property 'forEach' of object [object Object] is not a function
Тобиж в именнованных объектах у нас не работает метод forEach так же как и обрашение по порядку, тоесть вариант object[0] и так далее не проходит. Что же делать? Решение вот такое нашёл. Работает, эффективность не проверял.
Код QML:
Криво? Очень. Но работает.
for(var key in object) { if(object.hasOwnProperty(key)) { itemModel.append(object[key]) } }
И кстати вредно писать для модели данных json структуру в которой массивом будет список объектов (значения свойств), а не массив однородных объектов, который можно было бы запихнуть сразу как модель, а не парсить еще один раз.
Т.е. вместо:
model: JSON.parse(answer) или model: JSON.parse(answer).branches соответственно.
Конечно если есть возможность самим придумать структуру.
Тогда да, только самому собирать массив. Но я бы посадил это на биндинг, если возможно, тогда структура сама будет следить за изменениями данных, если сигналы шлются.