2016-08-28 105 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