2016-08-28 58 views
1

比方说,我有一个视图模型看起来是这样的:获取计算观察到的依赖

this.foo = ko.observable(); 
this.bar = ko.observable(); 

this.bah = ko.pureComputed(function(){ 
    var bar = this.bar(); 
}, this); 

this.baz = ko.pureComputed(function(){ 
    var foo = this.foo(), 
     bah = this.bah(); 
}, this); 

有没有什么办法来访问的计算观察到动态的依赖?在上面的示例baz中,我想要一个列表foobar,因为它们是可以触发计算的两个观测值。

我需要这个用于调试目的。

回答

1

AFAIK没有文档或公共API来获取此信息。另外,我认为(虽然我不确定)KnockoutJS内部的反作用:一个可观察者知道谁在依赖它(“订阅者”),而不是依赖知道它依赖的观察值。

唯一接近的是baz.getDependenciesCount(),但只给你一个数字。您可以查看the relevant source file以查看计算所揭示的其他内容。

唯一的其他选择可能会有所帮助:包括KnockoutJS的未定义/调试版本,并使用调试器深入了解底层问题。

+0

我想有没有办法知道触发计算的观察点呢?我看着'computedContext',但找不到有用的东西... – filur

+0

@filur顺便说一句,我最近[回答](http://stackoverflow.com/a/38604988/419956)与一个“消极”的确切的问题。 – Jeroen

+0

我明白了......噢,谢谢! – filur