2017-06-10 8 views
0

私のカウンタが機能しない理由を理解するのに助けが必要です。AngularJS counter

クリックするたびに増減するバッジが必要です。インクリメント/デクリメントが完了し、そのカウンタをスコープバッジに渡すと、私は定義されません。しかし、私は静的な数を追加する場合は動作します。私は増分を作る

app.factory('badgeCounter', function ($log) { 

    var items=0; 
    var num; 

    return { 
    countItems: function() { 
     ++items; 
     $log.info('items: ' + items); 
     return items; 
    }, 
    removeItems: function() { 
     items--; 
     $log.info('items: ' + items); 
    }, 
    listItems: function (items) { 
     $log.info('total de items:=> ' + items); 
     //return alert(items); 
     return items; 
    }, 
    cleanItems: function() { 
     return items = 0; 
    } 
    } 

たびに、私は、増分が働いていたかどうかを確認するために関数を呼び出します。

badgeCounter.countItems(); 
badgeCounter.listItems(); 

これは機能します。しかし、それをスコープに設定した場合、私は合計増分を取得しません。誰かが私が間違ってやっていることを教えてもらえますか?

$scope.items = badgeCounter.listItems(); 

<div ng-controller = "basketProductController">  
    <span> 
    <button ng-click="openBasket()" ng-init="items" class="button button-icon ion-ios-cart-outline"> 
     <span class="badge badge-assertive header-badge"></span> 
    </button> 
    </span> 
</div> 

答えて

0

listItems関数シグネチャでitems引数を削除します。メソッドのシグネチャでitems引数を持つことを意味します

変更

listItems: function (items) {

listItems: function() {

説明

にその以内変数名itemsは、返す予定のカウンタであるbadgeCounterサービスの変数itemsではなく、渡された引数(何も渡されていないのでundefined)を参照します。