2014-08-29 33 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