0

我想将 myFunction 与 change 或 onchange 事件绑定。

这是我要在 ViewModel 中绑定的函数:

myFunction: function spinSeconds(event, ui) {
  if (ui.value >= 60) {
      $(this).spinner('value', ui.value - 60);
      $('#minutes').spinner('stepUp');
      return false;
  } else if (ui.value < 0) {
      $(this).spinner('value', ui.value + 60);
      $('#minutes').spinner('stepDown');
      return false;
  }
}

我在 openModal() 函数中调用这个函数:

function openModal() {

    //
    //some code here
    //

    $('#seconds').spinner({
        spin: spinSeconds
    });
}

我使用它如下:

<div class="col-sm-9">
   <input id="seconds" value=10 size=2 data-bind="value: PreExecWaitMin, event: {change: myFunction}" /> minutes
</div>

我正面临这个错误:

'未捕获的 ReferenceError:无法处理绑定“事件:函数(){return {change:myFunction}}”消息:spinSeconds 未定义'

我搜索了许多事件绑定示例,但无法解决我的问题。谢谢你的帮助。

4

1 回答 1

1

事件绑定函数的第一个参数$data. 二是事件。但是在输入上观察更改事件的方法是订阅bound value

对于高级用户,如果您想注册自己的订阅以收到可观察对象更改的通知,您可以调用他们的订阅函数。例如:

myViewModel.personName.subscribe(function(newValue) {
    alert("The person's new name is " + newValue);
});

subscribe 函数是 KO 有多少部分在内部工作。大多数时候您不需要使用它,因为内置绑定和模板系统负责管理订阅。

更有可能的是,解决方案是设置一个基于值绑定变量的计算。订阅是隐式的。

如果spinner有自己的自定义绑定处理程序会更好,尽管您可能可以摆脱这个,因为它似乎只是一种视觉效果。jQuery 选择器在 Knockout 中是一种重要的代码异味。

于 2016-03-11T02:22:49.353 回答