Ng-show没有正确过滤

时间:2016-01-23 05:33:21

标签: javascript html css angularjs

我正在尝试删除我的商家信息,只是希望在我选择商品时显示。

我有这个片段并尝试使用ng-show:selectedCompany

  <tr ng-show="selectedCompany" data-ng-repeat="client in filtered = (clients | companyFilter:selectedCompany)">

当我点击所有选项时它会正确过滤但在我点击一个选项时不会正常工作。基本上它应该显示json数据。

演示: http://jsfiddle.net/s2bg6ugo/

2 个答案:

答案 0 :(得分:2)

它与真实性和角度观察变化有关。 [] == false,因此在首次加载时不会显示。但是你在数组中添加了一个id,所以现在[1]!= false。但是,因为angular只是观察数组本身而不是它的内容,所以没有变化(它是相同的数组),因此在范围有其他理由进行硬检查之前它不会更新。

而是将它放在你的ng-show中:

ng-show="selectedCompany.length"

答案 1 :(得分:1)

&#13;
&#13;
angular.module('App.filters', []).filter('companyFilter', [function () {
    return function (clients, selectedCompany) {
    return clients.filter(function(obj){
        return selectedCompany.indexOf(obj.company.id) > -1;
    })
        /*if (!angular.isUndefined(clients) && !angular.isUndefined(selectedCompany) && selectedCompany.length > 0) {
            var tempClients = [];
            angular.forEach(selectedCompany, function (id) {
                angular.forEach(clients, function (client) {
                    if (angular.equals(client.company.id, id)) {
                        tempClients.push(client);
                    }
                });
            });
            return tempClients;
        } else {
            return clients;
        }*/
    };
}]);
&#13;
&#13;
&#13;