我尝试在[1, 2, 3]
循环中搜索带有indexOf()
的id ng-repeat
数组,但可能是因为数据类型错误,它不起作用。
<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
始终返回false。
如果我将member.id
替换为message.read_by.indexOf(1) > -1
,则返回true。
我试图在parseInt()
或toString()
上传递member.id,因为它看起来像是一个问题,因为错误的数据类型但也不起作用。
我应该使用什么方法来传递member.id
值?
答案 0 :(得分:3)
这里的问题是值的数据类型,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"
}]
};
})
&#13;
<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>
&#13;
答案 1 :(得分:1)