0

使用 knockoutjs 时如何访问滑块的更改事件。我已经为滑块创建了一个自定义绑定,例如从 这里开始 。例如,这就是我想做的:

<div data-bind="slider: minMax, sliderOptions: {min: 20, max: 500, range: 'min', step: 50, values: [20 , 50 ]},sliderChange:DoSomethingWithNewValues" />

我想要一个像sliderChange这样的绑定,它只在滑块更改事件发生时发生,并且想要调用viewModel方法DoSomethingWithNewValues。

  function myViewModel() {
        var self = this;
        self.minMax = ko.observable([20, 50]);
        self.DoSomethingWithNewValues = function(){
          //make ajax stuff etc with new values
        }
  }

或者有没有更好的方法来解决这个问题。我不想像这样使用事件处理

$( ".selector" ).slider({
   change: function( event, ui ) {
     //somehow call myViewModel.DoSomethingWithNewValues ();
     //outside of my view model
   }
});

我已经试过了

this.minMax.subscribe(function(newminMax) {
   //call myViewModel.DoSomethingWithNewValues ();
  //this causes it to be called several times if you hover without sliding the slider like 
  //there is bug or something          
}
4

1 回答 1

1

如果您的自定义绑定正在将处理程序附加到slide事件(例如从您的小提琴中),那么可观察的值将在用户滑动时更新。一种选择是将自定义绑定更改为仅附加到change事件,然后以您之前尝试的方式订阅您的 observable。

否则,如果您甚至可以避免sliderChange绑定中的额外选项,只需将其添加到sliderOptionsas:change: myHandler中。

于 2013-10-15T14:42:18.217 回答