Jquery jsviews:如何在表单提交而不是onkeydown时触发模型数据更新
我最近遇到了jsrender/jsviews。在我的第一次尝试中,我使用双向数据链接/绑定实现了一个表单。这是可行的,但一旦用户在输入字段中键入内容,它就会立即更改模型数据 我想要实现的模式是更新表单提交上的模型数据,允许用户轻松取消他们所做的任何编辑 现在,我已经修改了表单模板,使用单向绑定,然后我只需使用jquery并从DOM中提取值,并在用户提交表单时使用$.observable(..).setProperty(…)更新模型数据 它能工作,但它非常难看。我假设必须有一种更干净的方法,不需要直接查询DOM中表单元素的当前值 在jsviews的onsubmit处理程序中是否有一种干净的方法来触发模型数据更新?或者,实现这种使用模式的首选方式是什么Jquery jsviews:如何在表单提交而不是onkeydown时触发模型数据更新,jquery,jsrender,jsviews,Jquery,Jsrender,Jsviews,我最近遇到了jsrender/jsviews。在我的第一次尝试中,我使用双向数据链接/绑定实现了一个表单。这是可行的,但一旦用户在输入字段中键入内容,它就会立即更改模型数据 我想要实现的模式是更新表单提交上的模型数据,允许用户轻松取消他们所做的任何编辑 现在,我已经修改了表单模板,使用单向绑定,然后我只需使用jquery并从DOM中提取值,并在用户提交表单时使用$.observable(..).setProperty(…)更新模型数据 它能工作,但它非常难看。我假设必须有一种更干净的方法,不需要
基本上,我希望实现与AngularJS问题中提到的相同的东西:(即,相当于ng model options=“{updateOn:'submit'}”)双向绑定是到视图模型,而不是到模型-因此,它是对应于在浏览器中呈现给用户的视图的数据。视图可能会因视图模型更改而更改,而无需在服务器上更新模型 您可以绑定到表单的提交操作<代码>:这将触发saveData方法,在该方法中,您可以向服务器提交适当的当前视图模型数据,服务器将在其中更新模型 但是,如果希望具有撤消功能,则需要在从服务器初始化或更新视图模型时,或上次调用saveData方法将当前视图模型数据保存回服务器时,创建视图模型的快照。“撤消”按钮将恢复到上一个快照 提供便于“快照”的功能(、和):
undo: function() {
this.merge(savedData); // Revert to previous savedData
...
},
saveData: function() {
savedData = this.unmap(); // Save current data, for subsequent Undo behavior
...
}
以下是一些jsfiddle,其中显示了与提交操作的绑定,并带有一个用于恢复到上次保存状态的撤消按钮:
- 它使用普通JavaScript对象
- 它使用编译的视图模型
- 哪个更高级/更复杂-具有多个已编译视图模型。(在某个时候,它将是jsviews.com上的一个示例…)
undo: function() {
this.merge(savedData); // Revert to previous savedData
...
},
saveData: function() {
savedData = this.unmap(); // Save current data, for subsequent Undo behavior
...
}
以下是一些jsfiddle,其中显示了与提交操作的绑定,并带有一个用于恢复到上次保存状态的撤消按钮:
- 它使用普通JavaScript对象
- 它使用编译的视图模型
- 哪个更高级/更复杂-具有多个已编译视图模型。(在某个时候,它将是jsviews.com上的一个示例…)