我尝试使用带有angular2的Jquery-ui滑块。我想要变量" slideValue"显示滑块的值,但我无法弄清楚如何将我的模型或变量从角度绑定到滑块。这是我的滑块组件:
import {Component, ElementRef, Inject, OnInit} from 'angular2/core';
declare var jQuery:any;
@Component({
selector: 'slider',
template:
`
<input type="text" [(ngModel)]="slideValue" id="amount" required placeholder="Enter a name here">
<div id="slider"></div>
<h2>slideValue = {{slideValue}}</h2>
`
})
export class Slider implements OnInit {
elementRef: ElementRef;
slideValue: number;
constructor(@Inject(ElementRef) elementRef: ElementRef) {
this.elementRef = elementRef;
}
ngOnInit() {
jQuery(this.elementRef.nativeElement).find("#slider").slider({
range: false,
orientation: "vertical",
min: 0,
max: 100,
value: 60,
slide: function( event, ui ) {
this.slideValue = ui.value; //doesn't seem to work
$( "#amount" ).val( ui.value );
}
});
}
}
代码可在此处获取:
https://github.com/nerg/slider
我希望能够使用任何&#34;垂直滑块&#34;使用Angular2,所以如果存在另一个可行的解决方案,我很感兴趣(我已经检查了材料,但它似乎不是&#34; angular2&#34;就绪且只有水平滑块)。
答案 0 :(得分:6)
您需要在幻灯片回调中使用正确的上下文(this
)。在这种情况下,箭头功能可以解决问题:
@Component({
selector: 'slider',
template: `
<input type="text" [(ngModel)]="slideValue" class="amount" required placeholder="Enter a name here">
<div class="slider"></div>
<h2>slideValue = {{slideValue}}</h2>
`
})
export class Slider implements OnInit {
elementRef: ElementRef;
slideValue: number;
constructor(@Inject(ElementRef) elementRef: ElementRef) {
this.elementRef = elementRef;
}
ngOnInit() {
var $amount = jQuery(this.elementRef.nativeElement).find(".amount");
jQuery(this.elementRef.nativeElement).find(".slider").slider({
range: false,
orientation: "vertical",
min: 0,
max: 100,
value: 60,
slide: (event, ui) => {
this.slideValue = ui.value;
$amount.val(ui.value);
}
});
}
}
答案 1 :(得分:0)
我正在寻找类似的东西并且遇到了这个:
https://www.npmjs.com/package/ng2-slider-component
不是100%抛光,它背后的github活动看起来很薄,但最接近于本文写作时似乎存在的原生angular2组件。