使用基于$ scope列表的过滤器进行ng-repeat

时间:2016-04-20 11:58:28

标签: javascript angularjs

这是关于AngularJS。

我的$ scope中有2个列表:

SELECT * FROM MyTable WHERE 'Name' NOT LIKE Kitty

我正在生成一个"添加到收藏夹" HTML列表:

$scope.cars = [{ name: 'Audi', price: '...' }, { name: 'BMW', price: '...' }];
$scope.favorites = ['Audi'];

但我希望没有"添加到"已经存在于我最喜欢的列表中的汽车按钮。

这可能是:

<ul>
    <li ng-repeat="car in cars"><button ng-click="addToFav($index)">Add to favourite</button></li>
</ul>
在ng-repeat语句中

2 个答案:

答案 0 :(得分:1)

创建过滤器:

angular.module('app').filter('isNotInArray', function () {
    return function (arr, targetArr, prop) {
        return arr.filter(function (item) {
            return targetArr.indexOf(item[prop]) === -1;
        });
    };
});

然后使用:

<li ng-repeat="car in cars | isNotInArray:favorites:'name'">

答案 1 :(得分:0)

您还可以在汽车列表中添加新密钥并查看usgin ng-if条件

    $scope.cars = [{ name: 'Audi', price: '...', isFav:true }, { name: 'BMW', price: '...', isFav:false }];

    $scope.favorites = ['Audi'];