我有一个绑定到我的 KOJS 模型的复选框。
<input type="checkbox" data-bind="checked:settings.remember">
当用户更改复选框的值时,我正在尝试更新数据库。但是,视图模型在这些 jQuery 函数之后更新:
$("input[type='checkbox']").click(function(){ });
$("input[type='checkbox']").change(function(){ });
$("input[type='checkbox']").mouseup(function(){ });
换句话说,当我在这些函数中查看我的 viewModel 时,它会在用户更改复选框之前返回复选框的值。因此,如果复选框曾经为真,现在告诉我为假(并显示为假),viewModel 仍将显示为真。
在绑定发生后,我是否可以使用其他一些 jQuery 函数?或者你能想到在我的 viewModel 变量改变后调用函数的任何其他聪明的方法吗?请注意,我当前的 viewModel 声明是:
var viewModel = {};
//...get some data from AJAX calls
ko.mapping.fromJSON(data, viewModel.'+file+');
其中文件是一些动态值(我从多个数据库中绘制我的视图模型)
我可以使用下面的 hacky 解决方案来解决上述问题(请参阅我的答案),但 RP Niemeyer 的回答表明手动订阅有更好的方法。到目前为止,我还无法弄清楚在我的 viewModel 中定义事物以及使用映射插件。
到目前为止,这是我的代码,当然,它不适用于 JSFiddle。