在我的应用程序中,我有一个添加对话框(jquery ui)。代码创建新的viewmodel实例并将其绑定到该对话框并显示对话框。
ViewModel还有save
方法,它使用click:
绑定绑定到对话框中的按钮(不是标准的jquery对话框按钮,而是自定义)。 ViewMode中的此保存方法执行post to server和server持久化数据。
当用户打开添加对话框,输入数据并单击保存按钮时,数据将被发送到服务器,对话框将关闭,对话框节点上将显示ko.cleanNode()
。
当用户再次打开添加对话框时,输入新数据并单击保存,两次调用ViewModel中的保存绑定,并发送两次POST到服务器。当他第三次打开对话框时,有3个帖子。
我尝试为viewmodel实例创建一个全局var,并在关闭对话框时将其设置为null,但这没有帮助 - save被调用两次甚至更多。
你有没有遇到过类似的东西?
答案 0 :(得分:2)
我怀疑每次打开对话框时绑定click
事件
@ rp-niemeyer在this question
中提及ko.cleanNode由Knockout内部使用来清理数据/计算 它创建的与元素相关的。它不会删除任何事件 处理程序由绑定添加
他的推荐
所以,我不建议使用这种模式。一个更好的模式是 使用或围绕一个部分的模板绑定并允许它 使用新绑定重新渲染。