Ich habe AngularJS factory verwendet, um ein neues Instanzmodell für mein Projekt zu erstellen, und jedes Modell enthält einen Fortschrittswert, der inkrementiert, pausiert und auf 0 basierend auf "start", "pause" zurückgesetzt wird. und "stop" Benutzeraktionen.
app.factory('ModelA', ['$timeout', function($timeout) {
function ModelA(progress) {
this.progress = progress;
};
ModelA.prototype = {
startProgress: function() {
this.counterFunction();
},
counterFunction: function() {
this.progress++;
if(this.progress == 100) {
this.progress = 0;
}
//console.log(this.progress);
//console.log(this.counterFunction);
progressTimeout = $timeout(this.counterFunction, 1000);
},
// Haven't tested the method below
pauseProgress: function() {
$timeout.cancel(progressTimeout);
},
stopProgress: function() {
$timeout.cancel(progressTimeout);
this.progress = 0;
}
};
return ModelA;
}]);
Aus irgendeinem Grund, wenn ich startProgress()
in der ng-click
Ausdruck Funktion aufrufen, wird der Fortschritt 1 erhöhen und dann stoppen. Ich fügte Protokolle hinzu, um this.counterFunction
für jeden Anruf zu überprüfen. Ich erkannte, dass es nur 1
und das ganze counterFunction
auf dem ersten Mal druckt. Wie beim zweiten Mal wird this.progress
NaN
sein und die CounterFunction zeigt undefined
.
Ich bin neu in AngularJS, könnte mir bitte jemand helfen? Vielen Dank.
Wenn jemand dieses Problem in der Zukunft auftritt, empfehle ich beide Antworten, die von @BrianHsu und Lihau Tan gepostet, um Ihnen zu helfen, verstehen die 'setTime' und' this' Thema besser. –