使用带有ng-disabled的AngularJS $过滤器

时间:2013-11-15 00:06:11

标签: javascript angularjs

我的$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中显示 $scope.election.voters这样的存在(Jade语法):

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

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

但是使用相同的过滤器(没有禁用ng | json),我得到Angular Infinite $digest loop错误。

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

1 个答案:

答案 0 :(得分: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>