2016-01-21 15 views
1

正如你所看到的,我創建了兩個JSON.data文件,如果列表等於A-1,我將在那裏得到json數據,否則我會獲取data.json下的所有主要數據。如何根據JavaScript中不同的過濾標準顯示新的網格數據(angularjs)

我試圖實現的是,在'List'下,我有3個其他複選框選擇,如'B-1','C-1'和'D-1'我想在那裏獲取數據。我可以通過創建多個json文件來做到這一點。但我想知道如果我把所有這些數據放在一個json文件下,並且每當我選擇數據時它只會顯示網格上的數據。

get: function(selectedFilters, callback) { 
     if(selectedFilters['List'] == 'A-1'){ 
     $http.get('dummy_data/data-list-asc.json?'+serialize(selectedFilters)).then(callback); 
     }else{ 
     $http.get('dummy_data/data.json?'+serialize(selectedFilters)).then(callback); 
     } 
+0

你可以添加一個字段過濾器到你的數據,並在ng-repeat中進行過濾。 –

+0

在ng-repeat中是否有任何示例文件? – mtkilic

+0

請參閱下面的答案。 –

回答

0

您可以將數據放置在單個JSON對象的不同屬性中。只需添加另一個關鍵值層即可。

舉例來說,如果你有A-1.json:

{ 
    "foo": 1, 
    "bar":2 
} 

而對於B-1.json:

{ 
    "foo": 3, 
    "bar": 4 
} 

這些可以整合到:

{ 
    "A-1": { 
    "foo": 1, 
    "bar": 2 
    } 
    "B-1": { 
    "foo": 3, 
    "bar": 4 
    } 
} 

當然,你必須改變相應地讀取這些文件的腳本。

另一種選擇是使用普通數據庫,並按集合來組織數據。如果你還沒有,請查看MongoDB

+0

我的data.json就是這樣,但是當我調用if語句只是爲了讓A-1過濾它不起作用,所有數據都顯示出來。 – mtkilic

+0

「如果」陳述不是你如何做的。從主對象data.json中訪問這些信息,如下所示:data [「A-1」] – awimley

+0

Thanks @awimley我總是使用if,else if,else語句,我將嘗試查看是否可以從主對象像你說的。 – mtkilic

0

您可以將您的控制器更改爲:

function SampleController($scope){ 
    var vm = this; 
    vm.selectedList = "A-1"; 
    vm.data = [ 
     {list:"A-1", foo:"item 1"}, 
     {list:"A-1", foo:"item 2"}, 
     {list:"B-1", foo:"item 3"}, 
     {list:"B-1", foo:"item 4"} 
    ]; 
} 

和你的HTML:

<label for="listSelect"> select List: </label><br> 
<select name="listSelect" ng-model="vm.selectedList"> 
    <option value="A-1">A-1</option> 
    <option value="B-1">B-1</option> 
</select><br>  

<div ng-repeat="item in vm.data | filter:vm.selectedList"> 
    {{item.foo}} 
</div> 

這裏是Plunker工作示例:http://plnkr.co/edit/RGlg5U

+0

這真的很好,但我的數據集將是這樣{「名稱」:「A-10」,「倉庫」:「ABC」,「總數」:「0」,「lmp_act」:「2」,「lmp_req 「:」23「,}所以當選擇A-1時我不會看到A-1打印在網格上的所有內容(horizantol)同時我會將該下拉列表複選框,以便如果A-1和B-2選擇了網格將顯示那些選擇。我會嘗試把我的代碼放在plunkr上來更好地解釋它。 – mtkilic

相關問題