我有一个像这样的小角度应用程序:
html
<body ng-app>
<div ng-controller="Ctrl">
<div ng-repeat="user in users | filter:1">
<span>{{ user.username }}, {{ user.id }}</span>
</div>
</div>
</body>
app.js
function Ctrl($scope) {
$scope.users = [
{"id":1,"username":"simon",},
{"id":8,"username":"betty",},
{"id":14,"username":"archie",},
{"id":3,"username":"jumbo1"},
]
}
输出
simon, 1
archie, 14
jumbo1, 3
我想做的是 仅对 过滤器参数进行 完全 匹配,并且仅对id字段进行过滤。
基本上,我希望输出为:
输出
simon, 1
我正在使用Angular 1.2。
在Angular 1.1.3或更高版本中,可以使用以下命令:
<div ng-repeat="user in users | filter:{'id': 1}:true">
{'id': 1}
说只能和现场比较id
。那会让你:
simon, 1
archie, 14
:true
说“完全匹配”,结果是:
simon, 1
工作原理如下:http :
//jsfiddle.net/AM95H/
要根据值列表进行过滤 ,如果您将列表包含在作用域变量中,则将自定义过滤器添加到JS文件中:
$scope.filterValues = [1,8];
$scope.myFilter = function(value) {
return ($scope.filterValues.indexOf(value.id) !== -1);
};
像这样使用:
<div ng-repeat="user in users | filter: myFilter">
为了根据参数列表进行过滤, 我们将创建自己的过滤器。在这种情况下,我们将使用所有要测试的输入值调用一次,而不是每个值调用一次。
因此,我们将收到的第一个参数是输入值的数组(在您的情况下为用户),第二个参数将是我们传入的参数[[1,8])。然后,我们将创建一个输出数组,并在输入流中添加(推入)与之一匹配的所有项目filterValues
。并返回输出数组。
myApp.filter('myFilter', function () {
return function(inputs,filterValues) {
var output = [];
angular.forEach(inputs, function (input) {
if (filterValues.indexOf(input.id) !== -1)
output.push(input);
});
return output;
};
});
并像这样使用它:
<div ng-repeat="user in users | myFilter:[1,8]">
这是一个示例:http :
//jsfiddle.net/AM95H/2/
问题内容: 我有一个带有一系列对象属性的对象,这些对象属性具有以下相似的结构(这是从服务返回数据的方式): 当我执行ng-repeat时,我可以遍历所有这5个对象,例如: 但是, 我真正想要做的是仅对那些不是“ foo”类型的项进行迭代 ,即3次迭代而不是5次。我知道可以以某种方式利用过滤器来执行此操作,但是我不确定如何执行。我尝试了以下方法: 但这不起作用。实际上,即使执行以下操作以将对象限制为
当用户选择一个标记时,我只想显示包含该标记的博客。例如,当一个用户选择了'c''标签时,只会显示带有该标签的帖子。 我的设置如下:我有一组包含post标签的博客,其中包含标签: null 这将显示blog-thumbnail组件 下面的代码部分是我的问题所在。它不起作用: 我在这方面花了大量的时间。有人能解释我做错了什么吗?
问题内容: 我想在 angularjs 1.2中 使用unsafe-html 。没有html的过滤器可以工作,而html则不能。我做的事: 我在我的html头中添加了angular-sanitize: 我的角度模块: 我的HTML: 编辑:更新为 问题答案: 已在Angular 1.2中删除。由于您正确地清理了输入内容,因此应该使用。 示例:http://plnkr.co/edit/0bHeXra
我有完全合法的数据来源: 我将其显示在这样的表中: 现在假设我想过滤我的数组。如果我有固定的行数,我可以在< code>tr元素上使用< code>*ngIf来选择显示/不显示一个项目,但是Angular不允许在一个元素上有两个结构指令。 我知道我可以使用< code>Array.filter简单地过滤源数组,但是这样会产生一个副本,如果我的数组大得多,这可能会成为一个问题。 我想将该行嵌套在某个
问题内容: 似乎是一个非常基本的问题,但我无法正确使用语法。 我想要的是显示id不是-1的所有问题。我究竟做错了什么。谢谢! 问题答案: 语法稍有不足,请尝试: 看到一点JSFiddle:http : //jsfiddle.net/U3pVM/3845/ 编辑: 变量示例:
name String extensions String[]