2016-01-21 16 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

相关问题