0

我有一個$範圍對象開始NG-重複:AngularJS當值與「X」

"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> 

然而,這似乎並沒有工作。

+1

您的HTML是無效的。 – Blowsie

回答

1

試試這個:

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

這將顯示包含'A'的所有CompareCode,而不僅僅是開頭。所以'XAX'也會匹配。 – runTarm

+0

我在原帖 – pixelbits

+0

中使用了indexOf這個假設啊,我明白了,但還是值得一提的是,後來的人可能會感到困惑! – runTarm

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> 
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

+0

'> -1'與過濾器btw有相同的結果,我想你想'=== 0'開頭 – Blowsie

+0

@Blowsie正確,它就像使用'| |過濾器,但爲了更好的維護,我會用這種方式。此外,我發佈了這個答案作爲不同的方式(從你的):) –

+0

點我試圖頂部使這裏是所有其他答案是不正確的,因爲他們只是檢查,看看它是否包含'A'而不是開始。 – Blowsie

1

您可以使用NG-如果檢查的第一個字符:

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

你可以在這裏嘗試一下:http://jsfiddle.net/Pwap3/8/

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>