为多个柜台服务

时间:2016-05-10 10:34:45

标签: angularjs

我有点卡在一个项目上(AngularJS很新)。现在,我的HTML是:

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

和我的(工作)JS:

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

这会创建一个带+和 - 按钮的简单计数器。我现在有需要多个独立计数器的情况。在我的脑海中,计数部分可以通过服务轻松处理,所以我不必重复自己。但这里的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

显然你的问题是非常开放的,并且会有很多答案可以帮助你。我已经模拟了一个快速示例,其中一个服务处理多个计数器的递增和递减 - 它可能不适合您的确切场景,但希望它将演示如何使用 服务。

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]--;
    }
}

这是服务。您需要从中获取的只是计数器的状态存在于服务中,并且还与服务进行交互的功能。