我可以以编程方式触发淘汰视图模型更新吗?

Posted

技术标签:

【中文标题】我可以以编程方式触发淘汰视图模型更新吗?【英文标题】:Can I trigger a knockout viewmodel update programmatically? 【发布时间】:2012-11-01 16:17:13 【问题描述】:

我编写了一个表单,其中包含各种值绑定和一个淘汰视图模型。表单由 AJAX 帖子提交(由表单按钮上的单击绑定触发)。我注意到当我在文本字段中进行更改时,模型在发布之前没有正确更新,将光标留在其中并直接单击提交按钮。

我知道值绑定的“afterkeydown”选项,但我不想使用它,因为它还会触发我在每次按键时的验证。有没有办法在我的 ajax 提交函数中以编程方式强制模型更新?

【问题讨论】:

你能把它扔在小提琴里,这样我们就可以看到你的代码了。没有它,很难说你做错了什么。 【参考方案1】:

尝试使用提交绑定而不是点击:

<form data-bind="submit: doSomething">
    ... form contents go here ...
    <button type="submit">Submit</button>
</div>

<script type="text/javascript">
    var viewModel = 
        doSomething : function(formElement) 
            // ... now do something 
        
    ;
</script>

提交的文档页面: http://knockoutjs.com/documentation/submit-binding.html

【讨论】:

以上是关于我可以以编程方式触发淘汰视图模型更新吗?的主要内容,如果未能解决你的问题,请参考以下文章

杜兰达尔/淘汰赛。更新其他视图/视图模型

添加项目以淘汰视图模型,不更新视图

淘汰赛视图模型映射停止订阅触发

淘汰赛仅更新部分视图模型

ajax发布后淘汰js更新视图模型

使用视图控制器淘汰嵌套的可观察对象