gpt4 book ai didi

javascript - AngularJS 通过内联表达式过滤

转载 作者:行者123 更新时间:2023-11-29 21:47:50 25 4
gpt4 key购买 nike

我正在尝试添加一个内联 Angular 过滤器,该过滤器通过计算结果为 true 或 false 的表达式进行过滤。这是我的 JS:

angular.module('programApp', [
'programApp.controllers',
]);
angular.module('programApp.controllers', [])
.controller('programController', ['$scope', '$filter',
function($scope, $filter){

$scope.advancedFilters = 1;

$scope.bars = [
{'name':'First',
'id':1},
{'name':'Second',
'id':2},
{'name':'Third',
'id':3},
{'name':'Fourth',
'id':4},
{'name':'Fifth',
'id':5}];
}]);

这是我的 HTML:

<div ng-app="programApp" ng-controller="programController">
<label>Level:
<select ng-model="advancedFilters">
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
</select>
</label>

<div ng-repeat="bar in bars | filter:advancedFilters <= bar.id">
<h3>{{bar.name}}</h3>
</div>
</div>

您可以看到我是如何根据 advancedFilters 下拉列表中的内容尝试过滤栏 ng-repeat 的。但是,当我尝试向 ng-repeat 添加一个评估为 true 或 false 的过滤器时,我会抛出一个 Angular 错误。

我想避免在这种情况下创建自定义函数。如果可能,过滤器应保留在 HTML 中。

这看起来很简单,但行不通。我在这里做错了什么?

这是一个代码笔:http://codepen.io/trueScript/pen/LVZKEo

最佳答案

如果你真的想避免使用 Controller ,你可以使用 ngInit 指令来创建 comparator表达式,它将在每次迭代时重新初始化。像这样:

<div ng-init="test = bar.id >= advancedFilters" 
ng-repeat="bar in bars | filter:{id:advancedFilters}:test">
<h3>{{bar.name}}</h3>
</div>

演示: http://codepen.io/anon/pen/eNBeqb

关于javascript - AngularJS 通过内联表达式过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30463968/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com