AngularJS:多个自定义过滤器/搜索

时间:2015-12-16 21:08:02

标签: javascript angularjs

我一直在研究使用AngularJS的学位程序查找工具。我正在尝试构建的是电子商务风格的侧边栏过滤选项。我已经获得了Degree Levels和一个自由形式的搜索字段,但我无法让Locations Offered过滤器与单选按钮配合使用。

这是我的控制者:

    $scope.search = function (row) {
    return (
        angular.lowercase(row.DPNAME).indexOf(angular.lowercase($scope.query) || '') !== -1 ||
        angular.lowercase(row.DPCAREERS).indexOf(angular.lowercase($scope.query) || '') !== -1 ||
        angular.lowercase(row.DPCONCENTRATIONS).indexOf(angular.lowercase($scope.query) || '') !== -1
    );
};
$scope.DLsearch = function (row) {
    return (
        row.DPDEGREELEVEL.indexOf($scope.qDegreeLevel || '') !== -1
    );
};

$scope.LOCsearch = function (row) {
    return (
        row.DPONCAMPUSMESA == 'Yes'
    );
};

它的最后一个过滤器不能正常工作。如果将“DPONCAMPUSMESA”替换为任何其他位置字段(例如DPONCAMPUSLISLE或DPNONTRADNMCALCENTRALIL),它会正确过滤数据。但我无法将其连接到单选按钮。

我也对过滤器采用不同的方法。

以下是我一直致力于的CodePen:http://codepen.io/ksherman/pen/yYqGgx?editors=101 如果您对JSON结构感兴趣:http://www.jsoneditoronline.org/?id=5145f3cca9dd9d5e5eaef2e39e2b2808

1 个答案:

答案 0 :(得分:1)

我打开了您的CodePen,最后一个过滤器完全按照它的编写方式工作 - 只留下两行符合条件的行(row.DPONCAMPUSMESA =='是')。为了使它更通用,尝试:

$scope.LOCsearch = function (row) {
    if (!$scope.qLocation) {
        return true; // no filter or 'All' option
    } else {
        return row[$scope.qLocation] == 'Yes';
    }
};