使用knockoutj时,如何访问滑块的更改事件。我已为here创建了滑块的自定义绑定 例如,这就是我想要做的事情:
<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
}
答案 0 :(得分:1)
如果您的自定义绑定将处理程序附加到slide
事件(例如来自您的小提琴),则在用户滑动时将更新可观察的值。一种选择是将自定义绑定更改为仅附加到change
事件,然后按照您之前尝试过的方式订阅您的observable。
否则,如果您甚至可以避免绑定中的额外sliderChange
选项,只需将其添加到sliderOptions
中:change: myHandler
。