2016-11-19 5 views
1

Ich möchte ein Abzeichen zu meinem Warenkorb, wenn ein Produkt hinzugefügt oder aus cart.I gelöscht versuchen Dienste zu verwenden, aber kein Glück ...AngularJS Service für Abzeichen Zählung

Das ist mein Service ist

.factory('sharedCounterService', [function(){ 

    var obj={}; 

    obj.count=0; 


    obj.addToCartcount=function(){ 
     obj.count+=1; 
     console.log("COUNT" +obj.count); 
    }; 

    obj.removeFromCartcount=function(){ 
     obj.count-=1; 
     console.log("COUNT" +obj.count); 
    }; 

    return obj; 
}]); 

-Controller

.controller('productCtrl', function($scope,$http,sharedCartService,sharedFilterService,sharedCounterService) { 
    $scope.addToCart = function(id,image,name,price){ 

     $scope.count=sharedCounterService.addToCartcount;  

     console.log("COUNT" +sharedCounterService.count); 

     cart.add(id,image,name,price,1);  
    }; 
}) 

.controller('cartCtrl', function($scope,$rootScope,sharedCartService,$ionicPopup,$state,$http,sharedCounterService) { 

    $scope.count=sharedCounterService.removeFromCartcount;  

    console.log("COUNT" +sharedCounterService.count); 
})   
.controller('mainCtrl', function($scope,sharedCartService,sharedCounterService) { 

    $scope.count=sharedCounterService; 

    console.log("COUNT" +sharedCounterService.count); 
}); 

Html

<a href="#" class="button button-icon ion-android-cart" ><span class="badge badge-assertive">{{count}}</span> 

Wenn ich es Konsole nur Zähler steigt Warenkorb Wert 0

+0

In Ihrem 'factory' Sie geben die' obj' Variable , also sollten Sie die Methoden an das Objekt anhängen und nicht an 'obj1', das niemals definiert ist. – Puigcerber

+0

@ user3698911 Protip: Fügen Sie ein funktionierendes Snippet ein oder _at mindestens_ richtig einrücken Sie Ihren Code, um Ihre Chancen auf eine schnelle Antwort zu verbessern. – JLRishe

Antwort

0

Auf dieser Linie:

$scope.count = sharedCounterService.addToCartcount; 

Sie den aktuellen Wert von addToCartcount-$scope.count zuweisen, aber jederzeit diese Zeile ausführt:

obj.count += 1; 

oder diese Zeile:

obj.count -= 1; 

obj.count wird mit einem neuen Wert überschrieben, aber $scope.count bezieht sich weiterhin auf seinen ursprünglichen Wert.

Um dies zu beheben, setzen Sie das gesamte Gegen Objekt auf Ihrem Umfang:

$scope.cartCounter = sharedCounterService; 

und die Zählung in Ihrer Sicht verweisen:

<a href="#" class="button button-icon ion-android-cart"> 
    <span class="badge badge-assertive">{{cartCounter.count}}</span> 
</a> 
+0

Ich habe dieses jetzt versucht, der Abzeichenwert ist 0, es erhöht nicht, wenn ich Produkte dem Wagen hinzufüge ... – user3698911

+0

@ user3698911 Bitte geben Sie uns ein [Mvce] (http://stackoverflow.com/help/mcve), vorzugsweise in Form eines Stack-Snippets, das wir ändern können, damit es funktioniert. – JLRishe