我尝试将 Jquery-ui slider 与 angular2 一起使用。我想让变量“slideValue”显示 slider 的值,但我不知道如何将我的模型或变量从 Angular 绑定(bind)到 slider 。这是我的 slider 组件:
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
我希望能够在 Angular2 中使用任何“垂直 slider ”,所以如果存在另一个可行的解决方案,我很感兴趣(我已经检查过 Material ,但它似乎还没有准备好“angular2”水平 slider )。
最佳答案
您需要在幻灯片回调中使用正确的上下文 (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);
}
});
}
}
关于javascript - 带有 Jquery-ui slider 的 Angular2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35336019/