0

次の日付選択ドロップダウンがあります。

<input type="text" ng-modle="byNameFilter"/>
<select ng-model="byDateFilter" multiple="multiple">
 <option ng-repeat="date in dates" value="{{date}}">{{date}}</option>
</select>
<div>
<repeater ng:repeat="program in programNames | filter:byNameFilter | filter:byDateFilter">
   <a href="#/client/{{client}}/program/{{program.name}}" class="span2 btn">{{program.name}}</a>
</repeater>

プログラム構造は次のとおりです。

[{'name':'program1','dates':['date1', 'date2']},{'name':'program2','dates':['date3', 'date2']}]

ng-model:byNameFilter にテキストを入力するとフィルターが機能するようになりましたが、選択ドロップダウンから日付を選択すると機能しません (複数の属性を削除すると正常に機能します)。

angular.js で複数選択オプションのフィルターを実装する方法

4

1 に答える 1

2

カスタム関数を使用して解決しました(フィルタリングするために提供されます)

$scope.dateFilter = function (item)
{
    //debugger;

    if ($scope.byDateFilter === undefined || $scope.byDateFilter.length == 0)
    {
        return true;
    }   

    for (var i in $scope.byDateFilter){         

        for (var j in item.dates)
        {
            if (item.dates[j] == $scope.byDateFilter[i])
            {
                return true;
            }
        }
    }

    return false;
}

html の変更:

<repeater ng:repeat="program in programNames | filter:byNameFilter | filter:dateFilter">

他に簡単な解決策はありますか?

于 2013-04-04T13:17:21.633 に答える