2017-05-20 50 views
1

我是AngularJS的初學者。現在我試圖用ng-repeat列出一個json文件。這些是我有:如何通過AngularJS中的鍵值過濾json列表?

filename.json:

{ 
    "name" : "name data", 
    "id"  : "id data", 
    "country" : "country data", 
    "age"  : "age data", 
    "job"  : "job data" 
} 

這份名單是比這更長的時間,但我可以成功ng-repeat但沒有任何過濾器都打印成表。現在,我試圖拿出一些項目。在這個例子中,我可能想顯示沒有「ID」和「年齡」。有沒有建議爲這種情況製作過濾器?

以下是我在堆棧溢出查找幾個答案後嘗試過的,但失敗了。答案很好,但他們的情況並不適合我。

模板:

<table> 
    <tr ng-repeat="(key, data) in $ctrl.person | filter: $ctrl.toShow"> 
    <td>{{key}}</td> 
    <td>{{data}}</td> 
    </tr> 
</table> 

控制器功能:

function myCtrl ($http) { 
    self = this; 
    self.toShow = function myFilter (key, value) { 
    if (key == 'id' || key == 'age') { 
     return false; 
    } else { 
     return true; 
    } 
    }; 
    $http.get('filename.json').then(function (response) { 
    self.person = response.data; 
    }); 
} 

回答

0

可以使用NG重複與NG-顯示過濾領域要如下

<table> 
    <tr ng-repeat="(key, data) in $ctrl.person" ng-show="key != 'id' && key != 'age'"> 
     <td>{{key}}</td> 
     <td>{{data}}</td> 
    </tr> 
</table> 

隱藏工作fiddle

+0

這正是我想要的,謝謝Amadou Beye! –

0
app.filter('toShow', function() { 
    return function (input) { 
     return JSON.parse(input, ['field1', 'field2']); 
    }); 
}); 

上面的代碼是基於事實:JSON.parse()來可以有第二個參數是 JSON的陣列領域搶。在這裏你可以放置字段來顯示而不是隱藏。

+0

謝謝你教我JSON.parse達米安·恰佩夫斯基。 –