Ich habe versucht, eine AngularJS-Komponente entsprechend einem Fortschrittsbalken zu erstellen. Hier ist ein JSFiddle für diese Frage erstellt http://jsfiddle.net/Lvc0u55v/6725/Wie definiert man eine neue Variable in AngularJS Komponente
Hier ist meine Anwendung und Komponente Definition:
var myApp = angular.module('myApp',[]);
myApp.controller('TestController', function($scope) {
$scope.total = 20;
$scope.count = 15;
$scope.changeTotal = function(value){$scope.total += value};
$scope.changeCount = function(value){$scope.count += value};
});
myApp.component('progressBar', {
bindings: {
percentage: '=',
},
controller: function() {
this.width = this.percentage * 100;
},
template: '<div class="progressBar">\
<div class="inner" style="width: [[$ctrl.width]]%"></div>\
</div>',
});
Und die folgenden HTML-Code:
<div ng-app="myApp">
<div ng-controller="TestController">
Total: {{total}}, <button ng-click="changeTotal(-1)">-</button><button ng-click="changeTotal(+1)">+</button><br/>
Count: {{count}}, <button ng-click="changeCount(-1)">-</button><button ng-click="changeCount(+1)">+</button><br/>
Percentage: {{count/total}}%<br/>
<br/>
<progress-bar percentage="{{count/total}}"></progress-bar>
</div>
</div>
Trotz der Definition des width
Attribut in der Component Controller, AngularJS kann es in der definierten Vorlage nicht finden.
Ich habe einige Schwierigkeiten, diesen Code effizient zu debuggen, seit ich gerade angefangen habe, AngularJS zu lernen.
Die Breite der Komponente wird sich nie ändern, da es nur um den Prozentsatz setzt auf machen, könnte der Wert auf angebracht werden ein gemeinsamer Dienst, um es dynamisch korrekt zu behandeln. – GMaiolo
@Goliadkin Sehr geehrter Herr, haben Sie Geige überprüft? Dies ist, wie '=' für Zwei-Wege-Bidnung ,, –
10 @ PankajParkar Thanks! Der Fortschrittsbalken bewegt sich nicht, also funktioniert es trotz Ihrer Änderung nicht :(Ich habe es bearbeitet, um die Breite richtig einzustellen (ein '* 100' fehlte): http://jsfiddle.net/p8xqyhng/2/ Zweite Frage, war die var 'self = this;' wird für verwendet? –