2016-05-10 18 views
3

Ich bin ein wenig auf einem Projekt fest (sehr neu mit AngularJS). Gerade jetzt, mein HTML ist:Service für mehrere Zähler

<button ng-click="decrement()" class="min">-</button> 
<input ng-model="counter" type="text" size="1"> 
<button ng-click="increment()" class="plus">+</button> 

und mein (Arbeits-) JS:

ngToggle.controller('ExampleController', ['$scope', function($scope) { 
$scope.image=1; 
$scope.decrement=function() { 
    if ($scope.counter>1) {$scope.counter--;}  
}; 
$scope.increment=function() { 
    $scope.counter++; 
} 
}]); 

Dadurch entsteht ein einfacher Zähler mit + und - Tasten. Ich habe jetzt die Situation, wo ich mehrere unabhängige Zähler will. In meinem Kopf könnte der zählende Teil leicht mit einem Service behandelt werden, also muss ich mich nicht wiederholen. Aber was ist der richtige Ansatz hier?

Antwort

0

Offensichtlich ist Ihre Frage ziemlich offen und es wird zahlreiche Antworten geben, die Ihnen helfen könnten. Ich habe ein kurzes Beispiel mokiert, in dem ein Dienst das Inkrementieren und Dekrementieren mehrerer Zähler behandelt - es ist möglicherweise nicht für Ihr genaues Szenario geeignet, aber es wird hoffentlich zeigen, wie ein Dienst verwendet werden könnte.

http://jsfiddle.net/Lvc0u55v/3763

function counterService() { 
    var counters = [0, 0, 0, 0]; 

    return { 
     getCounters: getCounters, 
     decrement: decrement, 
     increment: increment 
    }; 

    function getCounters() { 
     return counters; 
    } 

    function increment(i) { 
     if (angular.isDefined(counters[i])) 
      counters[i]++; 
    } 

    function decrement(i) { 
     if (angular.isDefined(counters[i])) 
      counters[i]--; 
    } 
} 

Dies ist der Service. Alles, was Sie davon wegnehmen müssen, ist, dass der Zustand der Zähler im Dienst lebt und die Funktionen, mit denen sie interagieren, ebenfalls vom Dienst bereitgestellt werden.

+0

Das ist tatsächlich, was ich mir vorgestellt habe! Können Sie Ihren letzten Kommentar zu Dienstleistungen erläutern? Auch: Ich fühle mich wie ich einen entscheidenden Punkt vermisse. Wenn ich versuche, den Jsfiddle-Code in eine HTML- und JS-Datei zu kopieren, funktioniert der Code nicht (Fehler: ngRepeat: Duplicate Key in Repeater) –

+0

Es ist nie eine gute Idee, einfach Code zu kopieren und einzufügen, der sich von Ihrem Arbeiten unterscheidet Umgebung. Wie gesagt, dies ist nur ein Beispiel, Sie sollten versuchen, diese Logik in Ihrer Anwendung selbst anzuwenden - es ist der beste Weg zu lernen, wie alles funktioniert. – Ankh

Verwandte Themen