我有一个$ 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>
然而,这似乎不起作用。
答案 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>