Это в первую очередь вопрос Javascript / JSON, однако, если кто-то знает о решении Webix, я также открыт для этого.
Фон
Я использую Webix в качестве структуры пользовательского интерфейса Javascript. В настоящее время я заполняю Webix Datatable данными JSON, которые выглядят примерно так:
complexData = {
"metadata": {
"itemno": 111222333,
"groupid": 19,
"name": "Blah"
},
"configs": [
{
"id": 1,
"name": "First",
"description": "some stuff",
"value": 222
},
{
"id": 3,
"name": "Third",
"description": "Foo",
"value": 333
}
],
"system": null
}
Я запускаю свой компонент Datatable, например:
webix.ui({
view:"datatable",
columns:[
{ id:"id", header:"ID" },
{ id:"name", header:"Name" },
{ id:"description", header:"Description", fillspace: true },
{ id:"value", header:"Value" }
],
data: complexData.configs
});
Что прекрасно работает.
Вы можете посмотреть, как это выглядит здесь: https://snippet.webix.com/4jd9cobb.
Как вы видите, я просто "иду в" complexData
и ссылаюсь на configs
, чтобы получить данные для моего компонента.
Однако (из-за обработки, которую мне нужно сделать позже), мне нужно немного изменить структуру данных. Мне нужно, чтобы объекты внутри configs
были заданы ключами на основе их id
, что может быть произвольным Это, конечно, означает, что configs
теперь является объектом объектов, а не просто массивом:
complexData = {
"metadata": {
"itemid": 111222333,
"groupid": 19,
"name": "Blah"
},
"configs": {
"1": {
"id": 1,
"name": "First",
"description": "some stuff",
"value": 222
},
"3": {
"id": 3,
"name": "Third",
"description": "Foo",
"value": 333
}
},
"system": null
}
Это больше не отображает мои строки.
Вот как это выглядит: https://snippet.webix.com/n8ypdeia
Детали
Если я console.log
мой рабочий результат (массив), я получаю это:
(2) [{…}, {…}]
0: {id: 1, name: "First", description: "some stuff", value: 222 }
1: {id: 3, name: "Third", description: "Foo", value: 333 }
length: 2
Мой ошибочный результат (объект объектов) приводит к следующему:
{1: {…}, 2: {…}}
1: {id: 1, name: "First", description: "some stuff", value: 222 }
3: {id: 3, name: "Third", description: "Foo", value: 333 }
Итак, complexData.configs
появляется в Javascript / Webix как отдельный объект, а не как совокупность объектов.
Так что мой вопрос таков:
Как я могу ссылаться на complexData.configs
таким образом, чтобы Javsacript / Webix знал, что это коллекция / или массив?
или
Есть ли способ заставить (отобразить?) Webix для анализа complexData.configs
, чтобы он распознал объекты внутри как строки с данными?
Спасибо.