【问题标题】:ko cant get update function triggeredko 无法触发更新功能
【发布时间】:2013-12-12 22:31:38
【问题描述】:

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

【问题讨论】:

    标签: jquery knockout-2.0


    【解决方案1】:

    您好,您需要通过 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/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-06
      • 2020-05-05
      • 1970-01-01
      • 1970-01-01
      • 2020-10-05
      相关资源
      最近更新 更多