2016-12-05 2 views
0

My HTML:ng-Modell nicht aktualisiert von jQuery Slider

<div ng-controller="myController as ctrl">      
    <div id='slider-children'></div> 
    <br/> 
    <br/> 
    <input type="text" ng-model="ctrl.one"> 
    <input type="text" ng-model="ctrl.second"> 
</div> 

Winkelteil:

angular.module('myApp',[]).controller('myController',myController); 
function myController() { 
    var self=this; 
    $("#slider-children").slider({ 
     min: 0, 
     max: 99, 
     range:true, 
     values: [10, 20], 
     change: function (event, ui) { 
      self.one=ui.values[0]; 
      self.second=ui.values[1]; 
      console.log(self.one); 
      console.log(self.second); 
     } 
     });  
} 

Könnte mir jemand erklären, warum die Eingabe do not upgrade Texte, während ich die jQuery UI Schieber gleiten, während ctrl.one und ctrl.second haben die richtigen Werte? Sie aktualisieren nur manchmal! Was mache ich falsch?

+0

Mixing AngularJS und jQuery verwenden können, können sei knifflig. Da die Slider-Ereignisse von außerhalb des AngularJS-Frameworks stammen, muss das 'ng-Modell' mit' $ setViewValue' aktualisiert werden. Weitere Informationen finden Sie in [AngularJS ngModelController API-Referenz - setViewValue] (https: //docs.angularjs. org/api/ng/type/ngModel.NgModelController # $ setViewValue) – georgeawg

+0

Wenn Sie mir eine Hand geben könnten, wäre ich dankbar. Ich habe einige Anstrengungen unternommen, aber ich kann es nicht schaffen ... –

+0

Google "eckige Slider-Demo". Es gibt viele Arbeitsbeispiele. – georgeawg

Antwort

0

Wir können nicht die vollständigen JQuery-Funktionen innerhalb des eckigen verwenden.

gibt es zwei alternative Lösungen

1.You die Werte in Textfeld aus jquery zuordnen kann, und direkt hinter dem folgenden Code in der HTML-Seite. es wird automatisch die Werte von Textfeld Winkelmodul binden, wenn wir die Werte Throught Javascript/jquery

<script type="text/javascript"> 
     !function (n, t) { "use strict"; var r = n.fn.val; n.fn.val = function (n) { if (!arguments.length) return r.call(this); var e = r.call(this, n); return t.element(this[0]).triggerHandler("input"), e } }(window.jQuery, window.angular); 
    </script> 
aktualisieren

2.You Angular Schieber anstelle von Jquery wie http://angular-slider.github.io/angularjs-slider/