微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – Angular2与Jquery-ui Slider

我尝试使用带有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

我希望能够使用Angular2的任何“垂直滑块”,所以如果存在另一个可行的解决方案,我很感兴趣(我已经检查了材料,但似乎没有“angular2”准备好,只有水平滑块) .

解决方法

您需要在幻灯片回调中使用正确的上下文(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,slide: (event,ui) => {
                this.slideValue = ui.value;
                $amount.val(ui.value);
            }
        });
    }
}

原文地址:https://www.jb51.cc/jquery/158256.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐