1
在下面的代码中,想法是如果你填入'test',这被认为是无效的,并且不应该把值写入observable。我遇到的问题是我的自定义绑定以某种方式重置了observable的值。Knockout.js:自定义绑定重设值
下面的代码的工作版本:http://jsfiddle.net/6hcpM/1/
var underlying = ko.observable('foo');
var errors = ko.observableArray()
var isValid = ko.dependentObservable(function(){
return errors().length === 0
});
var vm = {
name : ko.dependentObservable({
read : underlying,
write : function(value){
errors([]);
if(value==='test'){
errors([ 'Cant be test matey' ]);
};
if(isValid()){
underlying(value);
};
}
})
};
vm.name.isValid = isValid;
ko.bindingHandlers.validateCss = {
update: function(element, valueAccessor) {
observable = valueAccessor();
observable.isValid(); //this somehow causes the problem
}
};
ko.applyBindings(vm);
将validateCss放在不同的元素上听起来像是一个很好的解决方案。 – Pickels