2014-07-23 51 views
1

我發現如果計算的observable設置爲某個值,然後重新評估並返回null,則表示前一個計算值正在綁定/ GUI中使用沒有更新。這看起來很奇怪,我想問我是否做錯了什麼,或者如果這是預期的行爲?Computed Observable設置爲null不更新GUI

一個例子(http://jsfiddle.net/LkqTU/18081/):

我使用的是可觀察到的計算,返回在css結合使用的類名。綁定可以是一個類名或根本沒有類。模板:

<p data-bind="css: textColour">Coloured text</p> 

的計算觀察到的第一個計算結果爲「綠色」,和彩色文本變綠(我定義的類「綠色」的CSS)。當計算出的觀測值重新評估並返回null時,文本顏色仍然是綠色。

that.success = ko.observable(true); 
that.textColour = ko.computed(function() { 
    if (that.success()) { 
     return 'green'; 
    } else { 
     return null; 
    } 
}); 

我返回null從綁定中刪除類。爲什麼這不起作用?我發現,如果我返回undefined,或者什麼也沒有(也undefined),綁定更新如預期和綠色被刪除。

這個問題並沒有阻止我前進,但是質疑我對KO的理解。任何人都可以對此有所瞭解嗎?

回答

1

這可能被認爲是綁定中的一個錯誤。我建議你在Github上打開一個關於它的問題:https://github.com/knockout/knockout

另一個解決方法是返回一個空字符串。

that.textColour = ko.computed(function() { 
    if (that.success()) { 
     return 'green'; 
    } else { 
     return ''; 
    } 
}); 
+0

謝謝邁克爾 - 問題在https://github.com/knockout/knockout/issues/1468打開。 – steven