我正在编写我的第一个绑定处理程序并遇到一些问题。当输入“向上”或“向下”时,数字属性应该增加/减少1.然而,当我从文本框中跳出时,不会触发更新:
HTML:
<input data-bind="whichdirection: direction" /><button>test</button>
nr value:<span data-bind="text:number"></span>
脚本:
ko.bindingHandlers.whichdirection = {
update: function (element, valueAccessor) {
var value = valueAccessor();
if (value == 'up') {
ko.observable(ko.observable() + 1);
}
if (value == 'down') {
ko.observable(ko.observable() - 1);
}
}
}
vm = function () {
this.number = ko.observable(1);
}
ko.applyBindings(new vm());
这也是jsfiddle链接:http://jsfiddle.net/dingen2010/Sb67M/1/
答案 0 :(得分:0)
您好需要通过KO绑定或自定义绑定中的jQuery捕获keydown事件。然后你可以获得可以更新的访问号码变量(减少/增加)。
更新HTML结构
<input data-bind="whichdirection: number, value: number" />
<button>test</button>nr value:<span data-bind="text:number"></span>
更新JS代码
ko.bindingHandlers.whichdirection = {
init: function (element, valueAccessor) {
var value = valueAccessor();
$(element).keydown(function(event) {
if (event.keyCode === 38) {
value(value() + 1);
} else if (event.keyCode === 40) {
value(value() - 1);
}
});
}
}
jsfiddle在这里http://jsfiddle.net/BWn75/