【发布时间】:2013-05-05 23:32:52
【问题描述】:
我很难让 JQM 范围滑块在淘汰赛中正常工作。 这是一个非常基本的 JQM 滑块的 html 代码:
<input type="range" name="quantity-slider" id="quantity-slider" min="0" max="10">
我已经创建了这个敲除绑定作为示例,应用于准备好的文档:
var ViewModel = function() {
this.quantity = ko.observable(4);
}
$(document).ready(function () {
ko.applyBindings(new ViewModel());
});
我在互联网上阅读了其他人的一些帖子,这些帖子也发现了与范围滑块的 JQM 初始化相关的一些问题(例如这里:http://css.dzone.com/articles/knockoutjs-binding-helper 和这里:http://www.programico.com/1/post/2012/12/knockoutjs-jquerymobile-slider.html)并提供了一个可行的解决方案,每个都有他自己的自定义绑定实现。
其中之一,如下(by http://www.hughanderson.com/):
data-bind="value: quantity, slider: quantity"
到目前为止,一切都很好。之后,我遇到了这个问题:
如果 JQM 滑块在第一页上,它可以工作。当 JQM 滑块在第二页上时,不再工作。
我认为这是与这个特别的 JQM 小部件和他的 DOM 操作有关的问题,我可以理解。为了更好地解释这一点,我制作了两个 jsFiddle,我只是交换了两个 JQM 页面的顺序:
- 不工作:http://jsfiddle.net/5q38Q/ 第二个 JQM 页面上的滑块
- 工作:http://jsfiddle.net/5q38Q/1/ 第一个 JQM 页面上的滑块
谁能解释一下,为 JQM 滑块初始化敲除绑定的正确方法是什么?也许还有另一种方法可以为 JQM 滑块编写自定义绑定,或者将敲除绑定放在 pagebeforeshow 事件中?
更新: 通过以下更改,滑块显示正确的值,并且还与文本输入部分同步:
$(document).on('pagebeforeshow', '#slider-page', function(){
$('#quantity-slider').val(viewModel.quantity());
$('#quantity-slider').slider('refresh');
});
但我想知道是否没有更好的解决方案。
至少,连同 Varun 的自定义绑定,它现在对我来说效果很好!
【问题讨论】:
标签: jquery-mobile knockout.js custom-binding rangeslider