使用 indexOf() 在 ng-repeat 中搜索数组
Using indexOf() to search array inside ng-repeat
我尝试在 ng-repeat
循环中搜索 id 的 [1, 2, 3]
数组和 indexOf()
,但可能是因为数据类型错误,它不起作用。
<li ng-repeat="member in message.members">
Member ID: {{ member.id }}
<span ng-if="message.read_by.indexOf(member.id) > -1">Read</span>
</li>
数组 message.read_by = [1, 2, 3]
和 member.id = 1
对循环内的每个成员打印正确,但 message.read_by.indexOf(member.id) > -1
总是 returns 错误。
如果我将 member.id
替换为 message.read_by.indexOf(1) > -1
returns true.
我试图在 parseInt()
或 toString()
上传递 member.id 因为它在我看来是一个问题,因为数据类型错误但也不起作用。
传递 member.id
值的正确方法是什么?
您可以使用 track by $index
来达到这个目的:
<li ng-repeat="member in message.members track by $index">
Member ID: {{ member.id }}
<span ng-if="$index > 1">Read</span>
</li>
查看 documentation 了解更多信息。
这里的问题是值的数据类型,read_by
数组有 int 值,而 member.id
是字符串。
一个简单的解决方法是
var app = angular.module('my-app', [], function() {})
app.controller('AppController', function($scope) {
$scope.isRead = function(member) {
return $scope.message.read_by.indexOf(+member.id) > -1;
}
$scope.message = {
read_by: [1, 2, 3],
members: [{
id: "1"
}, {
id: "3"
}, {
id: "5"
}]
};
})
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="my-app" ng-controller="AppController">
<ul>
<li ng-repeat="member in message.members">
Member ID: {{ member.id }}
<span ng-if="isRead(member)">Read</span>
</li>
</ul>
</div>
我尝试在 ng-repeat
循环中搜索 id 的 [1, 2, 3]
数组和 indexOf()
,但可能是因为数据类型错误,它不起作用。
<li ng-repeat="member in message.members">
Member ID: {{ member.id }}
<span ng-if="message.read_by.indexOf(member.id) > -1">Read</span>
</li>
数组 message.read_by = [1, 2, 3]
和 member.id = 1
对循环内的每个成员打印正确,但 message.read_by.indexOf(member.id) > -1
总是 returns 错误。
如果我将 member.id
替换为 message.read_by.indexOf(1) > -1
returns true.
我试图在 parseInt()
或 toString()
上传递 member.id 因为它在我看来是一个问题,因为数据类型错误但也不起作用。
传递 member.id
值的正确方法是什么?
您可以使用 track by $index
来达到这个目的:
<li ng-repeat="member in message.members track by $index">
Member ID: {{ member.id }}
<span ng-if="$index > 1">Read</span>
</li>
查看 documentation 了解更多信息。
这里的问题是值的数据类型,read_by
数组有 int 值,而 member.id
是字符串。
一个简单的解决方法是
var app = angular.module('my-app', [], function() {})
app.controller('AppController', function($scope) {
$scope.isRead = function(member) {
return $scope.message.read_by.indexOf(+member.id) > -1;
}
$scope.message = {
read_by: [1, 2, 3],
members: [{
id: "1"
}, {
id: "3"
}, {
id: "5"
}]
};
})
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="my-app" ng-controller="AppController">
<ul>
<li ng-repeat="member in message.members">
Member ID: {{ member.id }}
<span ng-if="isRead(member)">Read</span>
</li>
</ul>
</div>