Angular JS - 使用过滤器检查单个值

时间:2014-09-16 13:04:02

标签: javascript angularjs

我的angularJS应用程序显示对象的项目。如果单个项目具有某个ID,我想显示一条消息。目前它不起作用,出了什么问题?

js fiddle

HTML

    <div data-ng-controller="myCtrl">


    <ul >
        <li data-ng-repeat="item in values"> 
            Item with id:<code>#{{item.id}}</code> 

            <code ng-hide="special(item.id)"> -> This id is special</code> 
        </li>
    </ul>

  </div>

NG

var app = angular.module('m', []);

app.controller('myCtrl', function ($scope) {
$scope.values = [{
    id: 1
}, {
    id: 2
 .....
}];

$scope.filter = [4,5,6];

$scope.filterIds = function (ids) {
        return function (item) {
            var filter = $scope.filter;

                 return filter.indexOf(item.id) !== -1;         
        }
 }

$scope.special = function (id) {
        return function (id) {
            var filter = $scope.filter;
                 return filter.indexOf(id) !== -1;          
        }
 }

});

3 个答案:

答案 0 :(得分:1)

$scope.special()在其自身内部返回一个函数,因此返回值是一个函数,而不是一个布尔值。替换为:

$scope.special = function (id) {
  var filter = $scope.filter;
  return filter.indexOf(id) !== -1;         
}

你会发现它有效。

答案 1 :(得分:1)

请见http://jsfiddle.net/1rhvuyL1/

 $scope.special = function (id) {
        if ($scope.filter.indexOf(id) >=0)
        {return true;}

    }

<强> HTML:

<div>
    <div data-ng-controller="myCtrl">
        <ul>
            <li data-ng-repeat="item in values">Item with id:<code>#{{item.id}}</code>  <code ng-show="special(item.id)"> -> This id is special</code> 
            </li>
        </ul>
    </div>
</div>

答案 2 :(得分:-1)

您不需要在JS中创建特殊功能。

尝试:

<div data-ng-controller="myCtrl">
    <ul >
        <li data-ng-repeat="item in values"> 
            Item with id:<code>#{{item.id}}</code> 
            <code ng-hide="item.id == '1'"> -> This id is special</code> 
        </li>
    </ul>
</div>

当id = 1

时,上面会隐藏“此ID是特殊的”
相关问题