Knockout js:绑定对象而不是单个值的代码
这会在列表中的每个项目旁边放置一个复选框,其中更改选中状态会从 SelectedItems 数组中添加/删除该值:
<script type="text/x-jquery-tmpl" id="tmpl">
<input name="cSelect"
type="checkbox"
value="${ ID }"
data-bind="checked: VM.SelectedItems" />
<!-- Add other item content here -->
</script>
VM.SelectedItems = ko.observeableArray([]);
在任何时候,SelectedItems 都包含选中项目的 id。
如果我希望复选框向 SelectedItems 添加和删除对象怎么办?例如,我想存储 { id : 3,checked : true }
的实际对象将其序列化为 value 属性?
This puts a checkbox next to each item of a list where changing the checked status adds/removes that value from the SelectedItems array:
<script type="text/x-jquery-tmpl" id="tmpl">
<input name="cSelect"
type="checkbox"
value="${ ID }"
data-bind="checked: VM.SelectedItems" />
<!-- Add other item content here -->
</script>
VM.SelectedItems = ko.observeableArray([]);
At any point, SelectedItems contains the ids of the checked items.
What if I wanted the checkbox to add and remove an object to SelectedItems? For example, I want to store an actual object of { id : 3, checked : true }
instead of serializing it for the value attribute?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
当对数组使用
checked
绑定时,它仅适用于基元数组。一种选择是创建一个计算的可观察量,它根据选定的 id 构建对象数组。
如果您正在处理大量项目,那么您可能需要构建一个对象,该对象是按键对项目进行索引的对象,以便您可以循环selectedIds并直接获取每个对象以减少循环量。
这是一个示例: http://jsfiddle.net/rniemeyer/pQQsY/
When using the
checked
binding against an array, it will only work with an array of primitives.One option is to create a computed observable that builds your array of objects from the selected ids.
If you are dealing with a large number of items, then you might want to build an object that is an index of the items by key, so that you can loop through selectedIds and directly grab each object to reduce the amount of looping.
Here is a sample: http://jsfiddle.net/rniemeyer/pQQsY/
在 KnockoutJS 3.0.0 中,您可以使用
checkedValue
参数:更多详细信息,请参阅文档
With KnockoutJS 3.0.0 you can use the
checkedValue
parameter:More details in the documentation
我们可以使用 like
并在复选框中编写单击事件来获取选定的数据或 selectedIds 的 subscripe 方法,并以 JSON 形式获取选定 id 的完整详细信息,我们必须使用 JSON.parse 来获取数据。
但我不知道如何在没有 JSON 的情况下存储整个对象。
We can use like
and write a click event in the checkbox to get a selected data or subscripe method for selectedIds and get the selected id entire details as a JSON and we have to use JSON.parse to get the data.
but I don't how to store entire object with out JSON.