javascript - knockout pureComputed 不工作

标签 javascript knockout.js

我在尝试使用 Knockout 处理地址时遇到了荒谬的时间。我的结构是这样的:

    viewModel.buildings()[0].Address()...

地址是:

    var Address = function () {
        var self = this;
        self.cAddr1 = ko.observable("");
        self.cCity = ko.observable("");
        ...
        self.cDisplay = ko.pureComputed(function () {
            return self.cAddr1() + '<br>' + self.cCity() + ...;
        }
        self.AddressActions = new AddressActions();
    }

一切似乎都正常。每个建筑物都有一个地址,并且可观察到的数据会正确更新。 cDisplay 也能正常工作。

我想添加另一个计算的/可观察的/任何东西,本地址改变时,它将调用一个函数,该函数是 AddressActions 的一部分。我试过了,但是 console.log 从来没有被击中,这对我来说没有任何意义:

    var Address = function () {
        // Same as above...
        ...
        self.triggerAddressVerify = ko.pureComputed(function () {
            console.log('here');
            self.cAddr1(); self.cAddr2(); self.cCity(); self.cState(); self.cZip();
            self.AddressActions.VerifyAddress(self);
        }
    }

知道为什么这不起作用吗?

结果 所以我仍然是 knockout.js 的新手(很明显),但它的工作方式与我想象的有点不同。我基本上使用了公认的答案,但将所有内容都包装到一个 pureComputed.这是我最后添加的内容:

    var Address = function () {
        ...
        self.addressChangeEvent = ko.pureComputed(function () {
            return self.cAddr1() + self.cAddr2() + self.cCity() self.cState() + self.cZip();
        }
        self.addressChangeEvent.subscribe(function () {
            self.AddressActions.VerifyAddress(self);
        }
    }

最佳答案

看起来您正在寻找 subscribe 而不是 computed

self.cAddr1.subscribe(function(){
    self.AddressActions.VerifyAddress(self);
});

您可以为每个需要事件的变量添加订阅

关于javascript - knockout pureComputed 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42863641/

相关文章:

javascript - 提交多个选定的行 Jquery 数据表

javascript - 互斥数据属性选择器

javascript - Firefox console.table 显示错误数据

javascript - KnockOut.JS 使用 observable 的值填充下拉列表

knockout.js - 使用 pjax 时在 history.back() 上消失的 knockout.js 绑定(bind)

javascript - 无法使用新数据对象更新 Knockout UI

javascript - 当您想要搜索具有特定值的多个 HtmlObject 时,哪种 JavaScript 代码更有效?

javascript - 能否使用 Protractor 测试 Knockout 应用程序?

javascript - 更改滚动上的导航事件类

javascript - 日期转换为 Highstock