使用ng-repeat angular with filter来排除空白值

时间:2015-05-21 11:34:51

标签: angularjs angularjs-ng-repeat angularjs-filter

我正在尝试使用filter在我的选择中获取非空白元素,但这不能正常工作。

<select ng-model="selectedSubject.id">
    <option value="0">
        <%= res.getString("portlet.form.subjectField.default")  %>
    </option>  
    <option ng-repeat="sujet in subjects.allSubjects | filter:{name_fr:'!!'}" value="{{sujet.id}}">
        {{sujet.name_fr}}
    </option>
</select>

3 个答案:

答案 0 :(得分:5)

filter:{my_field:'!!'}只过滤掉null个值。

如果您要过滤掉空值,或同时过滤null和空,您应该使用自定义过滤器

<option ng-repeat="sujet in subjects.allSubjects | filter:notEmptyOrNull" value="{{sujet.id}}">{{sujet.name_fr}}</option>

控制器

$scope.notEmptyOrNull = function(item){
  return !(item.name_fr === null || item.name_fr.trim().length === 0)
}

答案 1 :(得分:1)

您使用的过滤器只会过滤包含空值而非空白的数据。

要过滤掉空白数据,您必须创建过滤器。此问题已在堆栈溢出时得到解答。访问此链接。

Angular - Filter to remove blank strings from array

答案 2 :(得分:0)

您必须设置模型,以便angular选择基于select ngModel

的正确选项
<select ng-model="selectedSubject.id" ng-options="sujet.id as sujet.name_fr in subjects.allSubjects track by sujet.id"></select>

并在控制器上设置默认ID。

$scope.allSubjects = subjects;
$scope.selectedSubject.id = subjects[0].id;