Я новичок в Knockout, и у меня возникли проблемы с пониманием того, как «редактировать» модель представления при использовании плагина Nockout mapping. Хотел, чтобы кто-то помог мне. У меня есть список со списками. Ниже приведен подобный пример. В основном несколько групп с несколькими файлами.Как добавить материал в модель отображения нокаута?
[
{
"group": "Alice",
"files": [
{"filename": "red.mp3", "length": 5},
{"filename": "blue.mp3","length": 6},
{"filename": "yellow.mp3","length": 5}
]
},
{
"group": "Bob",
"files": [
{"filename": "green.mp3","length": 2},
{"filename": "purple.mp3","length": 10}
]
}
]
И я могу получить базовую модель от этого:
$.getJSON('api/get-list', function(data)
{
view = ko.mapping.fromJS(data);
ko.applyBindings(view);
});
Он работает, и я сумел связать его в HTML, так это видно и все хорошо в этой области. Но мне нужно добавить пару вещей, и я не знаю, как это сделать. И что более важно, как сделать это чисто и хорошо.
Я вывожу файлы с помощью флажка, и я хочу, чтобы свойство 'select' привязано к нему. Я смог сделать это, добавив поле в бэкэнд, но не хочу этого, поскольку его действительно не должно быть. Также необходимо указать количество выбранных в настоящее время, из числа, для каждой группы и всего.
Так, в принципе, я хочу что-то вроде этого:
{
"formSubmit": ?,
"totalNumberOfFiles": ?,
"totalNumberOfSelectedFiles": ?,
"groups":
[
{
"group": "Alice",
"numberOfFiles": ?,
"selectedFiles": ?,
"files": [
{
"filename": "red.mp3",
"length": 5,
"selected": boolean
},
...
]
},
...
]
}
- Хотя, например,
numberOfFiles
, вероятно, даже не нужно? Может это получить отfiles.length
или что-то в этом роде? - И должен ли
selectedFiles
быть функцией/наблюдаемым, которая подсчитывает количество выбранных файлов (как это выглядела?), Или скорее это список, который каким-то образом был добавлен/удален (и как это сделать?) - И как я мог в функции отправки получить список выбранных файлов, чтобы я мог отправить их обратно на сервер?
- И в любом случае, как мне «улучшить/обогатить/обернуть» базовый массив, который я получаю с сервера с этими вещами, не слишком грязным способом?
В принципе, я знаю (могу понять), как сделать привязку, когда только модель работает, но не понимаю, как построить его в хорошем смысле, используя отображение плагин (и я действительно не хотят делать это вручную).
Надежда кто-то может помочь мне, потому что я просто не могу понять это
Это сделало * много * яснее думаю, что я на самом деле быть в состоянии получить дальше по этому пути Knockout теперь самостоятельно. Спасибо огромное! – Svish