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