当值以'X'开头时,AngularJS - ng-repeat

时间:2014-07-21 14:09:40

标签: angularjs angularjs-directive angularjs-scope angularjs-ng-repeat

我有一个$ scope对象:

"MyData": [
    {
        "CompareCode" : "A004",
        "CompareMessage" : "test test test, test test test",
    },
    {
        "CompareCode" : "X084",
        "CompareMessage" : "test test test, test test test",
    },
    {
        "CompareCode" : "A1025",
        "CompareMessage" : "test test test, test test test",
    },
    {
        "CompareCode" : "A1",
        "CompareMessage" : "test test test, test test test",
    },
    {
        "CompareCode" : "X52",
        "CompareMessage" : "test test test, test test test",
    },
    {
        "CompareCode" : "A541",
        "CompareMessage" : "test test test, test test test",
    }
]

想要执行ng-repeat,但在CompareCode以A开头的所有项目上对其进行过滤。

我试过了:

<li ng-repeat="data in MyData | filter="data.CompareCode.indexOf('A')"">
    {{ data.CompareMessage }}
</li>

然而,这似乎不起作用。

5 个答案:

答案 0 :(得分:2)

您的HTML无效。

<li ng-repeat="data in MyData | filter="data.CompareCode.indexOf('A')"">
   {{ data.CompareMessage }}
</li>

应该是

<li ng-repeat="data in MyData | filter: { CompareCode:'A' } ">
    {{ data.CompareMessage }}
</li>

答案 1 :(得分:2)

我只想使用filter方法:

 $scope.getFilteredData = function(){
  return $scope.data.filter(function(item){
        return item.CompareCode.indexOf('A') === 0;
    });
}

和HTML:

<li ng-repeat="data in getFilteredData()">
    {{ data.CompareMessage }}
</li>

演示 Fiddle

答案 2 :(得分:1)

试试这个:

<li ng-repeat="data in MyData | filter: { CompareCode:'A' } ">
    {{ data.CompareMessage }}
</li>

答案 3 :(得分:1)

您可以使用ng-if检查第一个字符:

<li ng-repeat="data in myData" ng-if="data.CompareCode.indexOf('A') == 0">
    <span>{{ data.CompareMessage }}</span>
</li>

您可以在此处试用:http://jsfiddle.net/Pwap3/8/

答案 4 :(得分:0)

您可以创建自己的过滤器:

http://jsbin.com/mebucude/13/edit

$scope.myFilter = function (word) {
if(word.CompareCode.charAt(0)=='A'){
  return word.CompareMessage;
}

HTML:

<li ng-repeat="data in MyData | filter: myFilter ">
{{ data.CompareMessage }} </li>