2016-02-11 3 views
7

Я пытаюсь использовать слайдер JQuery-ui с угловым2. Я хотел бы, чтобы переменная «slideValue» отображала значение ползунка, но я не могу понять, как привязать мою модель или переменную от углового до ползунка. Вот мой слайдер компонент:Angular2 с JQuery-ui 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, поэтому, если другое жизнеспособное решение существует , Мне интересно (я проверяю материал, но он не выглядит «угловым2» и только горизонтальным слайдером).

+0

См. PrimeNG Slider в качестве ориентира. http://www.primefaces.org/primeng/#/slider –

+0

Это именно то, что я искал. Я ищу какое-то время, но никогда не нахожу эту страницу. Благодарю. – Nerg

+0

Что касается текущей версии ng2 0.2.0 (соответствует rc4), необходимо определить значение свойства ползунка (нуль - это нормально), тогда как предыдущие версии форм ng2 также позволяли бы значение быть неопределенным. Это произошло, когда я переносил демонстрационное приложение PrimeNG ng2 на rc4, чтобы увидеть, что сломалось, и начало перетаскивания слайдера с неопределенным начальным значением, начавшим бросать исключения. – rob3c

ответ

5

Необходимо использовать правильный контекст (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); 
      } 
     }); 
    } 
} 
+0

Спасибо большое! Это работает очень хорошо. – Nerg

0

Я искал что-то подобное, и наткнулась на это:

https://www.npmjs.com/package/ng2-slider-component

Не 100% полированная и GitHub деятельности за это выглядит тонким, но ближайшая вещь к натурному угловому компоненту, который, кажется, существует на момент написания этой статьи.

Смежные вопросы