javascript - knockout 订阅需要观察?

标签 javascript knockout.js

我有一个包含四个输入字段的表单。当从 UI 更新一个时,我需要更新 res (3)。这意味着更新的可能是这四个中的任何一个。

myViewModel.four.subscribe(function(newValue) {

//update one here
//update two here
//update three here

}); 

等等……

myViewModel.one.subscribe(function(newValue) {


//update two here
//update three here
//update four here

}); 

但是我应该如何更新方法中的那些呢?对我来说,这看起来像是 Stack Overflow 的情况……

最佳答案

在 Knockout 1.2.1 中,如果使用完全相同的值更新可观察对象,则不会发送更新。因此,在那种情况下,如果每个值都更新为相同的值,您应该没问题。

虽然以前,避免递归更新循环的最佳方法是检查您的订阅是否确实需要更新可观察对象。这将切断更新链。

所以:

myViewModel.one.subscribe(function(newValue) {

    if (two() !== "the right value") {
       two("the right value");
    }
    //etc...
}); 

否则,如果您的场景还有更多内容,那么可能还有其他可以探索的具有可写 dependentObservables 的选项。但是,当您获得的不仅仅是双向关系时,手动订阅通常是最好的选择。

关于javascript - knockout 订阅需要观察?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6398443/

相关文章:

javascript - Knockout获取属性值onClick函数

knockout.js - 将自定义绑定(bind)的值传递给自定义绑定(bind)中添加的 DOM 元素

javascript - Vinyl-fs(gulp 文件流)在触发回调或 promise 之前未完成 .dest 写入

javascript - Web 开发中客户端编码的安全趋势是什么

javascript - 从文件夹创建 zip 存档并使用 Node.js 保留结构

knockout.js - 带 knockout 的 RadioButtonList

javascript - 在js中从控制台读取和写入

javascript - 如何解析网页中的JavaScript?

javascript - 无法使用 attr 绑定(bind)在嵌入标记中绑定(bind) src 属性

javascript - 将大型 json 发送到服务器的最佳模式是什么