【发布时间】:2017-06-25 04:33:17
【问题描述】:
我是 Knockout 的新手,在使用 Knockout 映射插件时无法理解如何“编辑”视图模型。希望有人可以帮助我。我有一个列表。下面是一个类似的例子。基本上有多个文件的多个组。
[
{
"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 中,所以它是可见的,并且在那个区域一切都很好。但是,我需要添加一些东西,我不知道该怎么做。更重要的是,如何干净利落地做好。
我正在输出带有复选框的文件,并且我想要一个绑定到它的“选择”属性。我已经能够通过在后端添加字段来做到这一点,但不希望这样做,因为它真的不应该存在。还需要显示当前选择的数量、数量、每组数量和总数。
所以,基本上我想要这样的东西:
{
"formSubmit": ?,
"totalNumberOfFiles": ?,
"totalNumberOfSelectedFiles": ?,
"groups":
[
{
"group": "Alice",
"numberOfFiles": ?,
"selectedFiles": ?,
"files": [
{
"filename": "red.mp3",
"length": 5,
"selected": boolean
},
...
]
},
...
]
}
- 虽然,例如,
numberOfFiles可能甚至不需要?可以从files.length或其他地方得到吗? -
selectedFiles应该是一个计算所选文件数量的函数/可观察对象(看起来如何?),还是应该是一个以某种方式添加/删除的列表(以及如何做到这一点? ) - 我如何在提交功能中获取当前选定文件的列表,以便将它们发送回服务器?
- 无论哪种方式,我如何以一种不太混乱的方式“增强/丰富/包装”我从服务器获得的基本数组?
基本上,我知道(可以弄清楚)在模型工作时如何进行绑定,但不明白在使用映射插件时如何以好的方式构建它(我真的 不想手动操作)。
希望有人能帮帮我,因为我就是想不通????
【问题讨论】:
标签: javascript knockout.js viewmodel