这很难用任何示例来解释,因为我正在为一家公司开发应用程序并且无法粘贴源代码。我会尽量简单地解释。
除其他外,该应用程序正在使用带有 require.js 的 knockout.js 用于模块加载,以及 jquery。我已经定义了一个自定义的 bindingHandler,我们称之为 rows,它定义了许多 Jquery 函数,这些函数基于列表中名称的编辑、删除、更新、取消行为归因于链接。
用户在绑定到淘汰 AppViewModel 的输入中键入他们的姓名。他们单击添加按钮将其添加到 observableArray,然后在浏览器中输出。
完成此操作后,他们可以通过单击编辑来编辑名称,或使用删除链接将其删除。
如果他们点击编辑,他们会看到一个新的 div(以前是隐藏的),让他们能够在文本框中编辑他们的名字并选择更新,将新名字添加到列表中,或者他们可以取消,这会将他们带回非可编辑列表。
但是,我的问题是,如果用户更改了他们的名称,在编辑过程中的输入框中,然后选择取消,仍然会添加新名称而不是原来的名称。
我确信问题只是在这个 jQuery 函数中:
$(element).find('.cancelBtn').on('click', function() {
$(element).find('.editRow, .detailRow').toggle();
});
但是我不相信,切换或隐藏功能是否提交输入框中的值?
输入标签本身绑定到一个名称:
对应于 appViewModel: ... self.name = ko.observable('');
只是想知道可观察绑定是否是两种方式,是否阻止任何返回名称的原始状态,并且只是继续观察输入框中的更新名称,在单击任何链接之前对其进行更改?