1

我有一个对象,$scope其中包含一堆关于选举的细节。这个对象包括一个对象voters数组,每个对象都有一个_id

$scope.election = {
  voters: [
    { _id: '123' },
    { _id: '456' },
    { _id: '789' }
  ]
}

同样在我的范围内,我有关于当前登录用户的详细信息:

$scope.user = { _id: '456' }

如何将ng-disabled$scope.user._id绑定到对象数组中的存在$scope.voters

我试过的

我成功地简单地显示$scope.user._id了in$scope.election.voters这样的存在(Jade 语法):

pre(ng-bind="election.voters | filter:{user._id} | json")

当当前用户中时voters,他们会被显示。当他们不在选民中时,我得到一个空数组。这似乎非常接近我想要的。

但是在禁用 ng 的情况下使用相同的过滤器(sans | json),我得到了 Angular Infinite $digest 循环错误。

这种情况是不是太复杂了?我应该把它移到一个$filter吗?如果是这样,我将如何使它足够通用以在多种情况下有用(如果这甚至可行)?

4

1 回答 1

1

可以在控制器中运行一个简单的过滤器,或者使用app.filter('filterName', func...)创建一个可以在标记中使用的自定义过滤器

$scope.userIsVoter = function() {
        return $scope.election.voters.filter(function(el) {
          return el._id == $scope.user._id;
        }).length
      }
<button ng-disabled="userIsVoter()">Do Something</button>
于 2013-11-15T00:47:45.403 回答