更改范围滑块的最小/最大属性并动态重绘
Changing a range sliders min/max attributes and redraw dynamically
我想创建三个具有HTML5输入类型范围的范围滑块。这些滑块将相互依赖,因此如果我更改其中一个滑块的值,它可能会更改另一个的最小和/或最大属性。
假设我有这个数据:
$scope.test = {
slide1 : {
min : 0,
max : 100,
step : 1,
value : 50
},
slide2 : {
min : 0,
step : 1,
value : 0
},
slide3 : {
step : 1,
value : 0
}
}
这应该在这样的视图中表示:
<div ng-controller="testCtrl">
<input id="slide1" type="range" min={{test.slide1.min}} max={{test.slide1.max}} step={{test.slide1.step}} ng-model="test.slide1.value" value={{test.slide1.value}}>
<input id="slide2" type="range" min={{test.slide2.min}} max={{test.slide1.value}} step={{test.slide2.step}} ng-model="test.slide2.value" value={{test.slide2.value}}>
<input id="slide3" type="range" min={{test.slide2.value}} max={{test.slide1.value}} step={{test.slide3.step}} ng-model="test.slide3.value" value={{test.slide3.value}}>
</div>
因此,第一张幻灯片有一个固定的最小和最大
第二个有一个固定的最小值,但它的最大值取决于滑块1的值。
Slider3只能在slide2的值和slide1的值之间进行更改。
好吧,如果我更改滑块,所有的属性都会更改并设置为正确的值。
但是:不会发生的是滑块也被正确地重新绘制。只有当我去更改slide2和slide3的值时,这才有效。将幻灯片3设置为任意值,然后更改幻灯片2。如果你这样做,你会看到幻灯片3被正确地重新绘制,所以拇指会改变它相对于当前值和给定范围的位置。但改变幻灯片1并没有显示出这样的效果。只有当你开始更改幻灯片2/3…的值时,你才会看到变化
在运行时更改最小/最大属性时,是否可以强制重新绘制范围输入元素?
以下是一个plunker示例:http://plnkr.co/edit/UWChUywSpy64uvNbCHE0?p=preview
我通过用具有所需值的新输入范围元素替换dom的该部分来处理此问题。你可以在https://userbob.com/threeSliders.jsp底部两个滑块的最大值取决于在顶部滑块上选择的值。
相关文章:
- 将特定属性动态添加到元素中
- Google Closure Advanced |无法识别对象属性|动态属性
- 从数据属性动态获取 JQuery Ajax 请求的 URL
- 如何在 javascript 中使用 Onclick 属性动态创建对象
- 如何根据 JSON 对象的属性动态填充 Angular JS 中的显示对象
- 通过html标签数据属性动态加载js、css文件
- 使用jquery中的css属性动态设置宽度值
- HTML-为属性动态创建输入标签
- 将onmouseover属性动态添加到锚点标记
- 如何在php中使用onclick事件属性动态创建链接标记
- 在HTML中将标题属性动态添加到URL
- 当通过“链接”属性动态进行更改时,Angular 指令无法正常工作
- 如何从元素的href属性动态更改javascript调用的参数
- 改变“polar"属性动态使用Highcharts
- 如何添加自定义属性动态选择选项,以及如何获取它使用javascript或dojo
- 如何使用下拉菜单和HTML5数据属性动态更改HTML元素的分组
- 修改缩略图脚本中的放大图像,以根据其大小属性动态显示图像
- HTML元素属性动态分配
- 如何使用'd'属性动态地设置为SVG
- 将属性动态应用于指令中ngRepeat中的DOM元素