如何过滤选择多个属性?

时间:2015-11-20 06:21:42

标签: angularjs

我的角度应用中有一个选择:

 {{editMode}}
      <select ng-model="item.solCategory" class="form-input form-dropdown cols-6 margin-bottom-10"
              ng-options="category as category.name for category in categories| filter:{category.available:'true',editMode:'true'} "
              ng-change="changeSelection(item)"
              required>
        <option value="">Please select</option>
      </select>

我尝试过滤类别并使用一个属性,即category.available。这是categories数组的属性。现在我想过滤掉范围变量。此变量称为editMode boolean。当我尝试上面的陈述时,我收到一个错误。我怎样才能解决这个问题?这是错误:

Error: [$parse:syntax] Syntax Error: Token '.' is unexpected, expecting [:] at column 29 of the expression [categories| filter:{category.available:'true',editMode:'true'}] starting at [.available:'true',editMode:'true'}].

2 个答案:

答案 0 :(得分:0)

错误来自调用属性category.available 你可以这样写:

category as category.name for category in categories| filter:{available:'true'}| filter :{editMode:'true'}

答案 1 :(得分:0)

你可以使用一个功能:

<"... | filter: myFilter">

在你的控制器中:

$scope.myFilter = function(category) {
  return $scope.editMode && category.available;
}

但是在你的情况下,如果你不在inputMode中,使用ngIf来简单地阻止计算整个指令会更有效:

<select ng-if="editMode" ng-options="....">