angular ng-repeat 按数字过滤
angular ng-repeat filter by number
我在 angular (1.5.8)
中按类型(数字)过滤列表时遇到一些问题
我的带过滤器的 ng 重复如下:
ng-repeat="activity in guild.history_updates | filter : {
action_type: filters.action_type,
user_id: filters.user,
}"
和我的过滤器
<md-input-container class="md-block">
<label>Type</label>
<md-select ng-model="filters.action_type">
<md-option>
All
</md-option>
<md-option ng-repeat="action_type in guildActivityCtrl.action_types"
ng-value="action_type.type">
{{action_type.name}} ({{ action_type.type }})
</md-option>
</md-select>
</md-input-container>
当我在 action_type 1 上过滤时,我也得到了操作类型 10
但是当我将过滤器更改为 10 时,我得到了正确的结果
所有其他操作类型也被很好地过滤(例如 action_type 3)
ng-repeat="activity in guild.history_updates | filter:{action_type:filters.action_type,user_id: filters.user}:true"
在您的过滤器之后添加“:true”应该将其更改为严格的相等性检查,现在比较数值。
希望这对您有所帮助。
https://docs.angularjs.org/api/ng/filter/filter
参数部分定义了比较器。
正如 Neal Hamilton 所说,我们需要添加 :true
以添加严格的相等性检查。
当 md-select 的输出不是数字时,添加 :true
将不起作用,因此我们可以添加一个过滤器来将输出解析为数字,例如:
.filter('parseInt', function() {
return function(number) {
if(!number) {
return false;
}
return parseInt(number , 10);
};
})
我们可以将此过滤器添加到 ng-repeats 过滤器中,例如:
ng-repeat="activity in guild.history_updates | filter : {
action_type: (filters.action_type | parseInt ),
user_id: filters.user,
} : true"
编辑:当您不想严格检查过滤器中的每个值时,您可以使用多个过滤器,例如:
ng-repeat="activity in guild.history_updates
| filter : {
action_type: (filters.action_type | parseInt ),
} : true
| filter: {
user_id: filters.user
}"
我在 angular (1.5.8)
中按类型(数字)过滤列表时遇到一些问题我的带过滤器的 ng 重复如下:
ng-repeat="activity in guild.history_updates | filter : {
action_type: filters.action_type,
user_id: filters.user,
}"
和我的过滤器
<md-input-container class="md-block">
<label>Type</label>
<md-select ng-model="filters.action_type">
<md-option>
All
</md-option>
<md-option ng-repeat="action_type in guildActivityCtrl.action_types"
ng-value="action_type.type">
{{action_type.name}} ({{ action_type.type }})
</md-option>
</md-select>
</md-input-container>
当我在 action_type 1 上过滤时,我也得到了操作类型 10
但是当我将过滤器更改为 10 时,我得到了正确的结果
所有其他操作类型也被很好地过滤(例如 action_type 3)
ng-repeat="activity in guild.history_updates | filter:{action_type:filters.action_type,user_id: filters.user}:true"
在您的过滤器之后添加“:true”应该将其更改为严格的相等性检查,现在比较数值。
希望这对您有所帮助。
https://docs.angularjs.org/api/ng/filter/filter
参数部分定义了比较器。
正如 Neal Hamilton 所说,我们需要添加 :true
以添加严格的相等性检查。
当 md-select 的输出不是数字时,添加 :true
将不起作用,因此我们可以添加一个过滤器来将输出解析为数字,例如:
.filter('parseInt', function() {
return function(number) {
if(!number) {
return false;
}
return parseInt(number , 10);
};
})
我们可以将此过滤器添加到 ng-repeats 过滤器中,例如:
ng-repeat="activity in guild.history_updates | filter : {
action_type: (filters.action_type | parseInt ),
user_id: filters.user,
} : true"
编辑:当您不想严格检查过滤器中的每个值时,您可以使用多个过滤器,例如:
ng-repeat="activity in guild.history_updates
| filter : {
action_type: (filters.action_type | parseInt ),
} : true
| filter: {
user_id: filters.user
}"