过滤AngularJS中无过滤器(删除过滤器)的表达式条件

时间:2015-04-08 05:33:01

标签: angularjs

这就是我设置FilterExpr的方式

$scope.ChangeFilter = function() {
    if ($routeParams.SCId)  {
        $scope.FilterExpr = {'SubCategoryID': $routeParams.SCId.toString()};
    }
   else {
        $scope.FilterExpr = //What should be here //
   }
};

我在这里使用它

<div class='box' ng-repeat="product in ProductService.Products  | filter:SearchText | filter:FilterExpr:true| orderBy:'ProductName'">
    <!-- Display filtered Products -->
</div>

如果$ routeParams.SCId不存在,我想使它等同于:

<div class='box' ng-repeat="product in ProductService.Products  | filter:SearchText | orderBy:'ProductName'">
    <!-- Display filtered Products -->
</div>

其他部分的表达应该是什么?

1 个答案:

答案 0 :(得分:2)

你可以通过ng-if实现这一点,可能有更好的方法来实现这一目标,

如果范围中有SCId ,则会显示此内容,而其他内容将从dom中删除。

<div ng-if="SCId" class='box' ng-repeat="product in ProductService.Products  | filter:SearchText | filter:FilterExpr:true| orderBy:'ProductName'">
<!-- Display filtered Products -->

如果范围中没有SCId,则会显示此内容,而其他内容将从dom中删除。

<div ngif="!SCId" class='box' ng-repeat="product in ProductService.Products  | filter:SearchText | orderBy:'ProductName'">
<!-- Display filtered Products -->

并使用$routeParams

添加范围变量

在控制器中,

$scope.SCId = $routeParams.SCId;