AngularJS - 选择零(0)值

时间:2014-08-18 06:07:37

标签: angularjs select

选择选项是:

`[
 {StatusID: 0, StatusDesc: "New"}, 
 {StatusID: 10, StatusDesc: "Enabled"}, 
 {StatusID: 30, StatusDesc: "InProgess"},
 {StatusID: 70, StatusDesc: "Done"}
];`

为了显示所有值,我添加了选项" all"有价值""

<select id="StatusID" name="statusID" ng-model="search.StatusID" ng-options="Status.StatusID as Status.StatusDesc for Status in StatusList">
    <option value="">All</option>
</select>    

问题在于选择值 0 NEW 时,它会显示所有值,而选择 ALL 则不会显示任何值。

您可以找到示例代码here.

2 个答案:

答案 0 :(得分:0)

您需要进行两项更改..

  
      
  1. 在你的itemslist json中,状态ID是字符串,将它们转换为数字。

  2.   
  3. 你必须对Angular说你想要一个严格的比较。使用Angular 1.1.5很容易,因为过滤器过滤器现在有第三个参数,比较器,其中true是一个非常有用的简写。

  4.   

E.g。

     <tr ng-repeat="item in itemList | filter:search:true">

更新了小提琴:http://jsfiddle.net/gwnfkxmc/1/

答案 1 :(得分:0)

通过为所有

添加 statusID 作为未定义来修复
[
 {StatusID: undefined, StatusDesc: "All"}, 
 {StatusID: 0, StatusDesc: "New"}, 
 {StatusID: 10, StatusDesc: "Enabled"}, 
 {StatusID: 30, StatusDesc: "InProgess"},
 {StatusID: 70, StatusDesc: "Done"}
 ];

使用自定义过滤器

$scope.statusFilter = function (item) {
    return $scope.currentStatus === undefined || item.StatusID === $scope.currentStatus
}

updated fiddle