ko无法获得更新功能

时间:2013-12-12 22:31:38

标签: jquery knockout-2.0

我正在编写我的第一个绑定处理程序并遇到一些问题。当输入“向上”或“向下”时,数字属性应该增加/减少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/

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/