使用indexOf()在ng-repeat

时间:2015-06-23 09:37:24

标签: javascript angularjs indexof

我尝试在[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值?

2 个答案:

答案 0 :(得分:3)

这里的问题是值的数据类型,read_by数组有int值,其中member.id是字符串。

一个简单的解决方法是

&#13;
&#13;
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;
&#13;
&#13;

答案 1 :(得分:1)

您可以将cell.value = "CLL-" & Format(cell.row-1, "000") 用于此目的:

track by $index

有关详细信息,请查看documentation