如何存储使用角度js在api url中添加params

时间:2014-09-20 15:25:25

标签: javascript angularjs angularjs-ng-repeat angularjs-service

我的角度js功能代码

$scope.cardcall = function (cardtype) { 
        $scope.cityname=cityname;   
        $http({method: 'GET',url: '/api/v1/asasas&filterBy=cardNames&filterByValue='+cardtype.key}).success(function(data) {
            $scope.deal = data.deals;              
        });                  
    };

我的观看代码

<div class="check_box" ng-repeat="cardtype in card.cardTypes.buckets">                                                  
 <label>
 <input type="checkbox" value=" {{cardtype.key}}" name="cardname" ng-click="cardcall(cardtype)" /> {{cardtype.key}} 
 </label>                                                   
</div>

现在当点击一些复选框时,它会调用api,如

/api/v1/asasas&filterBy=cardNames&filterByValue=asssas

当我点击第二个复选框然后api调用

时,我试图做什么
/api/v1/asasas&filterBy=cardNames&filterByValue=asssas,xsdza

1 个答案:

答案 0 :(得分:0)

您可以通过.checked

cardtype添加ng-model
<input type="checkbox" ng-model="cardtype.checked" value=" {{cardtype.key}}" name="cardname" ng-change="typecall()" />

然后,您可以在代码中运行循环以确定已检查的内容

$scope.cardcall = function () { 
    $scope.cityname=cityname;

    var keys = [],
        buckets = $scope.card.cardTypes.buckets;

    for (var i = 0, len = buckets.length, i < len; i++) {
        if (buckets[i].checked)
            keys.push(buckets[i].key);
    }

    if (keys.length) {
        keys = keys.join();

        $http({method: 'GET',url: '/api/v1/asasas&filterBy=cardNames&filterByValue=' + keys}).success(function(data) {
            $scope.deal = data.deals;              
        });
    }
};

每当其中一个复选框被选中或取消选中时,都会调用此选项,并且由于它查看了所有复选框,因此无需再传递cardtype.key。如果没有选中复选框,则不会进行AJAX调用。