反正有没有使用 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
变量。在 computed
s 的情况下,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
.
一样暴露了
我正在尝试使用 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
变量。在 computed
s 的情况下,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
.