2017-02-15 53 views
0

在控制器交貨JSON數據I具有在控制器

$scope.sampleArray=[{ 
    'title': 'SampleTitleOne', 
    'description': 'SampleDescriptionOne', 
    'category': 'Saving' 
}, 
{ 
    'title': 'SampleTitleTwo', 
    'description': 'SampleDescriptionTwo', 
    'category': 'Saving' 
}, 
{ 
    'title': 'SampleTitle3', 
    'description': 'SampleDescription3', 
    'category': 'Current' 
}, 
{ 
    'title': 'SampleTitleIV', 
    'description': 'SampleDescriptionIV', 
    'category': 'Current' 
}, 
{ 
    'title': 'SampleTitleFive', 
    'description': 'SampleDescriptionFive', 
    'category': 'Group' 
}, 
{ 
    'title': 'SampleTitleFive', 
    'description': 'SampleDescriptionFive', 
    'category': 'Group' 
}, 
{ 
    'title': 'SampleTitleFive', 
    'description': 'SampleDescriptionFive', 
    'category': 'Mixed' 
}, 
{ 
    'title': 'SampleTitleFive', 
    'description': 'SampleDescriptionFive', 
    'category': 'Other' 
}]; 

我有爲了基於用戶輸入上述陣列如下面的數據陣列。假設用戶輸入數組是

$scope.order = ['Other', 'Group', 'Mixed', 'Saving', 'Current']; 

應用濾波器的輸出應該像下面

$scope.sampleArray=[{ 
    'title': 'SampleTitleFive', 
    'description': 'SampleDescriptionFive', 
    'category': 'Other' 
}, 
{ 
    'title': 'SampleTitleFive', 
    'description': 'SampleDescriptionFive', 
    'category': 'Group' 
}, 
{ 
    'title': 'SampleTitleFive', 
    'description': 'SampleDescriptionFive', 
    'category': 'Group' 
}, 

{ 
    'title': 'SampleTitleFive', 
    'description': 'SampleDescriptionFive', 
    'category': 'Mixed' 
}, 
{ 
    'title': 'SampleTitleOne', 
    'description': 'SampleDescriptionOne', 
    'category': 'Saving' 
}, 
{ 
    'title': 'SampleTitleTwo', 
    'description': 'SampleDescriptionTwo', 
    'category': 'Saving' 
}, 
{ 
    'title': 'SampleTitle3', 
    'description': 'SampleDescription3', 
    'category': 'Current' 
}, 
{ 
    'title': 'SampleTitleIV', 
    'description': 'SampleDescriptionIV', 
    'category': 'Current' 
}]; 

有什麼辦法申請角$過濾器來實現此之後?

+0

你想在NG-重複或僅在可變訂購? –

+0

中的變量本身 – Seshu

回答

1

使用OrderBy過濾

$scope.sampleArray = $filter('orderBy')($scope.sampleArray, function(item) { return $scope.order.indexOf(item.category);}); 
+0

謝謝!如何更改$ scope.order變量,如$ scope.order = ['Other','Group','Mixed'];在這種情況下,$ scope.sampleArray應該只包含數組中的'other','group'和'mixed'相關記錄 – Seshu

+0

然後添加 $ scope.samleArray = $ filter('filter')($ scope.sampleArray,函數(item){返回$ scope.order.indexOf(item.category)!== -1;}) 排序前 –

+0

我會做類似 $ scope.originalData = [....]; ($ order),function(newOrder){ var filteredData = $ filter('filter')($ scope.originalData,function(item){return $ scope.order.indexOf(item.category) (filterData,function(item){return $ scope.order.indexOf(item.category);}) });}}}; $ scope.filteredOrderedData = $ filter('orderBy') –

0

你應該檢查orderBy過濾器,並以某種方式改變它的內容。