反正有没有使用 Chrome 调试器检查淘汰可观察量?

Is there anyway to inspect knockout observables using Chrome debugger?

我正在尝试使用 Chrome 调试器检查可观察对象。我正在使用 knockout 插件,但它没有显示我感兴趣的 observable 的信息。我一直在使用的解决方法是将 observable 设置为全局 window 对象并在控制台中检查它.由于多种原因,这很耗时。

如果我理解这个问题(我可能不理解,我通常不使用调试器检查变量,而是用 console.debug 来代替我的代码),你看不到你的值可观察对象,因为它们是函数,您只能检查数据值。

您可以通过使用复制它们的函数订阅可观察对象来保持您的值可用。一个方便的地方将附加到 observable 本身。只需创建一种新的可观察对象:

function debugObservable(value) {
    var self = ko.observable();

    self.subscribe(function (newValue) {
        self.internalValue = newValue;
    });
    self(value);
    return self;
}

当你想检查它时,找到 observable 并查看它的 internalValue 属性。

如果您正在使用 non-minified 敲除库,您可以检查每个 non-computed 可观察对象上公开的 _latestValue 变量。在 computeds 的情况下,IIRC 您可以在 computed.

上公开的 state 变量中找到公开的 _latestValue 变量

总而言之,如果您引用 knockout 的调试(又名 non-minified)构建,您可以通过这些变量检查可观察对象 .

var observable = ko.observable();
var computed = ko.computed(...);
...
observable._latestValue;
computed._state.latestValue;

编辑:我已经修复了 computed 的情况,但请注意,如果您使用的是最新的淘汰赛(版本 >= 3.4.1),您可以直接使用 computed._latestValue也是,因为它像 observable.

一样暴露了