2014-08-29 34 views

回答

0

你應該使用一個計算

this.canSave = ko.computed(function() { 
    return this.observableOne() === "foo" && this.observableTwo() === "bar"; 
}, this); 

編輯:或者使用骯髒的邏輯就像 http://www.knockmeout.net/2011/05/creating-smart-dirty-flag-in-knockoutjs.html

+0

感謝您的直接。我在這個 [小提琴](http://jsfiddle.net/noppanit/b3ky5/103)上找到了類似的解決方案, – 2014-08-29 14:18:47

0

嘗試使用訂閱事件。有一個可觀察的說prevlength並設置它在這裏的長度。

this.myObservable.subscribe(function(previousValue){ 
    //get previousval length and set it to another observable say prevlength 
}, this, "beforeChange"); 

並再次使用訂閱沒有beforechange,並檢查prevlength與當前長度。 使用observable say shouldEnable並將長度與prevlength進行比較。如果更改的長度更新應爲true或設置爲false。

以及基於條件禁用的概念,你可以檢查Enable condition for click binding