javascript - 带有 Jquery-ui slider 的 Angular2

标签 javascript jquery-ui angular

我尝试将 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/

相关文章:

javascript - 在 JavaScript 中每隔一个空格插入随机数

javascript - 纯粹使用 Javascript 构建集成测试并在浏览器中运行是一个坏主意吗?

php - Uncaught SyntaxError : Unexpected identifier with php

javascript - 以 Angular (5) "correct"方式将样式应用于尾随零

javascript - 基于一个属性的唯一 JavaScript 数组

jQueryUI 可排序和拖动速度问题

jquery - 如何捕获 jsPlumb-Draggable 事件?

angular - 两种方式绑定(bind)不适用于 Angular 为 2 的原始对象

angular - ECharts如何在圆环图中心显示文字?

javascript - Hangfire 完成后如何发出通知