【发布时间】:2017-12-12 12:34:13
【问题描述】:
我正在尝试在 web 应用程序中实现引导滑块并使用 knockoutjs 进行数据处理。
Javascript
$(document).ready(() => {
function ViewModel() {
singleValue = ko.observable(20)
arrayValues = ko.observableArray([20, 50])
}
ko.applyBindings(ViewModel)
})
HTML
<input
type ='text'
data-slider-min = 0
data-slider-max = 100
data-slider-step = 1
data-slider-tooltip ='hide'
data-provide ='slider'
data-slider-value = 20
data-bind = 'value: singleValue'
/>
<p data-bind='text: singleValue'></p>
效果很好。如果我更改滑块的值,则 p 中的值会相应更改。
<input
type ='text'
data-slider-min = 0
data-slider-max = 100
data-slider-step = 1
data-slider-tooltip ='hide'
data-provide ='slider'
data-slider-value = [20, 40]
data-bind = 'value: arrayValues'
/>
<p data-bind='text: arrayValues()'></p>
// output is 20,50, so knockout is taking precedence,
// because I set the initial value to [20, 40] in html
如果我更改滑块的值,则值似乎会相应更改。但它不再是一个数组,它是一个字符串值。但是最小值和最大值会随着滑块的变化而正确变化。
<p data-bind='text: arrayValues()[0]'></p>
这里渲染站点时的输出为 20。这是我所期望的。 但是当我开始移动滑块时,数组变成了一个字符串,输出变为 2,即 20,40 的第一个字符。
有谁知道我做错了什么?
【问题讨论】:
标签: javascript twitter-bootstrap knockout.js slider