【发布时间】:2011-06-01 05:34:40
【问题描述】:
我有一个大型 viewModel,我想将状态(“已读”/“未读”)的更新发布到服务器而不发布整个模型。
我所做的是像这样创建一个自定义绑定:
ko.bindingHandlers.statusUpdater = {
update: function(element, valueAccessor) {
console.log(element);
}
};
在模板中:
<div data-bind='template: { name: "contactsListTemplate", data: viewModel.conversations.conversationlist }'> </div>
<script type="text/html" id="contactsListTemplate">
<table>
<tbody>
{{each(i, conversation) $data}}
<tr>
<td>
<input type="checkbox" data-bind="checked: read, statusUpdater: conversation_id" />
</td>
</tr>
{{/each}}
</tbody>
</table>
</script>
对于自定义绑定,我只对更新感兴趣,我认为可以使用 KnockoutJS 检测更新,并确定更新了哪个项目,以便我可以获取该项目 ID 和新统计信息,然后将其发布到服务器。
发生的事情是 customBinding 是 console.logging 对单个复选框修改的每个复选框。这意味着我更改了一个复选框,所有 3 个复选框都通过ko.bindingHandlers.statusUpdater 登录到控制台。
我曾考虑在数据绑定中添加点击事件,但这似乎不如自定义绑定干净。也许我试图用自定义绑定做的不是它们的用途?
想法?
【问题讨论】:
标签: jquery knockout.js