0

在我的应用程序中,我有一个添加对话框(jquery ui)。代码创建新的视图模型实例并将其绑定到此对话框并显示对话框。

ViewModel 还具有save使用绑定绑定到对话框中按钮(不是标准的 jquery 对话框按钮,而是自定义)的方法click:。ViewMode 中的这个 save 方法执行 post 到服务器和服务器持久化数据。

当用户打开添加对话框,输入数据并单击保存按钮时,数据被发送到服务器,对话框关闭并ko.cleanNode()在对话框节点上。

当用户再次打开添加对话框,输入新数据并单击保存时,ViewModel 中的保存绑定被调用两次,并且向服务器发送两次 POST。当他第三次打开对话框时,有 3 个帖子。

我试图为 viewmodel 实例创建一个全局变量,并在对话框关闭时将其设置为 null,但这并没有帮助 - save 被调用了两次甚至更多。

你有没有遇到过类似的事情?

4

1 回答 1

2

click我怀疑您每次打开对话框时都会绑定事件

正如@rp-niemeyer 在这个问题中提到的

Knockout 在内部使用 ko.cleanNode 来清理它创建的与元素相关的数据/计算。它不会删除绑定添加的任何事件处理程序

他的推荐

所以,我不建议使用这种模式。更好的模式是在一个部分周围使用 with 或模板绑定,并允许使用新的绑定重新呈现它。

于 2013-10-14T10:52:55.893 回答