Ich habe eine jQuery UI Slider Angular Directive erstellt. Hier ist mein Code:Warum wird meine jQuery Slider Angular Directive nicht aktualisiert, wenn ich den Scope-Wert ändere
HTML
<slider min="filters.price.min" max="filters.price.max" range="filters.price.range"></slider>
-Controller
App.controller("MainController", function ($scope, $http) {
$scope.initFilters = function() {
$scope.filters = {};
$scope.filters.price = {};
$scope.filters.price.min = 0;
$scope.filters.price.max = 0;
$scope.filters.price.range = [0, 0];
};
$scope.initFilters();
$http.get("someurl").success(function (data) {
$scope.initFilters();
$scope.filters.price = {};
$scope.filters.price.min = 0;
$scope.filters.price.max = 100;
$scope.filters.price.range = [$scope.filters.price.min, $scope.filters.price.max];
$scope.$broadcast("applyFilters");
});
});
Richtlinie
App.directive('slider', function() {
return {
restrict: 'E',
replace: true,
transclude: true,
template: "<div class='slider'></div>",
scope: {
min: "=",
max: "=",
range: "="
},
link: function (scope, element, attrs) {
$(element).slider({
range: (scope.range != undefined),
min: scope.min,
max: scope.max,
values: [scope.min, scope.max],
slide: function (event, ui) {
scope.$apply(function() {
scope.range = ui.values;
});
}
});
scope.$on("applyFilters", function() {
console.log("APPLY FILTERS:", scope);
console.log("APPLY FILTERS:", scope.min, scope.max, scope.range);
});
}
}
});
Wie Sie kann aus meinem Code zu sehen, ist mein Preis Schieberegler auf 0 initialisiert.
Ich mache dann einen HTTP-Aufruf an einen Webservice und nach Erhalt einer Antwort, versuche ich die Min-, Max-und Bereich Werte des Preis-Slider auf 0- 100.
Aus irgendeinem Grund bleibt mein Schieberegler auf der Benutzeroberfläche auf 0.
Die Konsolenprotokolle in den Event-Handler sind allerdings seltsamsten ...
Das erste Konsolenprotokoll druckt den Umfang Objekt, das die richtigen Werte hat (dh min = 0, max = 100 und Bereich = [0 , 100]).
Das zweite Konsolenprotokoll gibt die falschen Werte aus (d. H. Min = 0, max = 0 und Bereich = [0, 0]).
Bitte könnte mir jemand helfen zu verstehen, warum das passiert.
Danke,
Ben Bullock
Platz .then statt .success. – stormec56
Das Erstellen eines Fiddler/Plunkr-Links würde den Leuten helfen, es schnell zu lösen. –
Ich habe eine Plunkr erstellt, die das Problem demonstriert. Siehe hier: https://plnrkr.co/edit/E8sSh3Nh5F6SHLFszuWl?p=preview –