我的视图中有一个范围滑块,根据我的刺激控制器返回的滑块的输出值,我试图执行if&else语句,其中我希望显示基于值的不同选项。
例如,如果range-slider_value=<5然后我想为plan.find_by(id:1(显示plan.title、plan.description和plan.monthly_price,如果小于5,我想为plan.find_bi(id:2(显示相同的内容。然后我希望能够签出所选的计划。
我的观点:
<div class="range-slider" data-controller="range-slider">
<input type="range"
name="customRange"
class="range-slider__range"
data-target="range-slider.range"
data-action="input->range-slider#updateValue"
value="6"
min="0"
max="10"
step="0.5">
<output class="range-slider__value" data-target="range-slider.value">
</output>
</div>
我的刺激控制器:
export default class extends Controller {
static get targets() {
return ['range', 'value', 'rangeFrom', 'rangeTo', 'valueFrom', 'valueTo']
}
connect() {
if (this.hasValueTarget) { this.valueTarget.innerHTML = this.rangeTarget.value }
if (this.hasValueToTarget) { this.valueToTarget.innerHTML = this.rangeToTarget.value }
if (this.hasValueFromTarget) { this.valueFromTarget.innerHTML = this.rangeFromTarget.value }
}
updateValue(evt) {
this.valueTarget.innerHTML = evt.currentTarget.value;
}
updateFromValue() {
let fromValue = this.rangeFromTarget.value
let toValue = this.rangeToTarget.value
if (fromValue >= toValue) {
this.rangeToTarget.value = fromValue
this.valueToTarget.innerHTML = fromValue
}
this.valueFromTarget.innerHTML = fromValue
}
updateToValue() {
let fromValue = this.rangeFromTarget.value
let toValue = this.rangeToTarget.value
if (toValue <= fromValue) {
this.rangeFromTarget.value = toValue
this.valueFromTarget.innerHTML = toValue
}
this.valueToTarget.innerHTML = toValue
}
}
不确定这是否相关,但我看到了这段代码,发现if语句实际上并没有按要求工作。
我最终做了什么
updateFromValue(event) {
let new_value = parseInt(event.currentTarget.value)
let to_value = parseInt(this.rangeToTarget.value)
我正在使用当前事件来获取此函数中的最新值。我还必须解析if语句的值,因为默认情况下,这些值是字符串。
我还通过static targets = ['rangeFrom', 'rangeTo', 'valueFrom', 'valueTo']
使用了最新的StimulusJs目标设置