Knockout.js - 多次调用绑定

时间:2013-10-14 10:39:27

标签: jquery knockout.js

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

ViewModel还有save方法,它使用click:绑定绑定到对话框中的按钮(不是标准的jquery对话框按钮,而是自定义)。 ViewMode中的此保存方法执行post to server和server持久化数据。

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

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

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

你有没有遇到过类似的东西?

1 个答案:

答案 0 :(得分:2)

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

@ rp-niemeyer在this question

中提及
  

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

他的推荐

  

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