2016-11-21 3 views
0

Ich bin neu in diesem eckigen js. Ich habe den Code wie folgt:Angular js ng-wiederholen und filtern

Ich habe ng-repeat (eine ng-Wiederholung innerhalb einer anderen). Ich möchte die Reihenfolge der Inside-Liste nach dynamischen Optionen ordnen.

ie: der sort_option Wert wird von $ scope Variable dynamisch erhalten. Dies wird dazu führen, dass alle Inside-ul-Listen in sortierter Reihenfolge sind. aber ich möchte nur eine Liste in der inneren Schleife sortieren.

<ul> 
<li ng-repeat='itemsli in mylists.lists'> 
<ul> 
<li ng-repeat="item in list | orderBy: sort_option | filter: {due_date_time : current_date_time}"> 
    {{item.name}} 
</li> 
</ul> 
</li> 
</ul> 
+0

versuchen Reihenfolge ändern: ng-repeat = "Element in der Liste | Filter: {due_date_time: current_date_time | orderBy: sort_option}" –

+0

Es funktioniert nicht – SARAN

+0

meine Antwort überprüfen, ich denke, es funktioniert für Sie –

Antwort

0

Ich bin nicht sicher, dass ich Sie

richtig verstehe, aber ich erstellt sample code wie das Ihre und scheinen, wie es

die Listen sind

$scope.firstLists = [{id: 2},{id: 1},{id: 3}]; 
$scope.secondLists = [{id: 2},{id: 1},{id: 3}]; 

mit

funktioniert gut
<ul> 
<li ng-repeat='itemsli in firstLists'> 
    <ul> 
    <li ng-repeat="item in secondLists | orderBy: 'id'"> 
    {{item.id}} of {{itemsli.id}} 
    </li> 
    </ul> 
</li> 
</ul> 

und das Ergebnis ist

1 of 2 
2 of 2 
3 of 2 
1 of 1 
2 of 1 
3 of 1 
1 of 3 
2 of 3 
3 of 3 
1

Änderung wie dies die Linie,

<li ng-repeat="item in list | orderBy: sort_option | filter: {due_date_time : current_date_time}: true "> 
0

Tatsächlich habe ich den Code : true am Ende des Filters hinzu:

<ul> 
<li ng-repeat='itemsli in mylists.lists'> 
<md-button ng-click="sortby_cards('vote')">Sort by votes</md-button> 
<md-button ng-click="sortby_cards('attachment_count')">Sort by Attachments 
</md-button> 

<ul> 
<li ng-repeat="item in list | orderBy: sort_option | filter: {due_date_time : current_date_time}"> 
    {{item.name}} 
</li> 
</ul> 
</li> 
</ul> 

In Controller:

$scope.sortby_cards = function(sort_value){ 
    console.log(sort_value); 
    $scope.sort_option = sort_value; 
} 

wenn ich auf den button sortiere nach stimmen es ist durch bestimmte inside list durch seine votes bestellen bestellen. Ich denke jetzt verstehen Sie mein Problem.

+0

sollten Sie setzen Wert in der current_date_time irgendwo auch, dann würde meine Antwort funktionieren –

0

Ich habe Antwort:

<ul> 
<li ng-repeat='lists in mylists.lists'> 
<md-button ng-click="sortby_cards('vote', lists)">Sort by votes</md-button> 
<md-button ng-click="sortby_cards('attachment_count', lists)">Sort by Attachments 
</md-button> 

<ul> 
<li ng-repeat="item in list | orderBy: list.sort_option | filter: {due_date_time : current_date_time}"> 
    {{item.name}} 
</li> 
</ul> 
</li> 
</ul> 

In Controller:

$scope.sortby_cards = function(sort_value,list){ 
    $scope.sort_option = sort_value; 
    $scope.sort_index_val = index_val; 
    list.sort_option = sort_value; 
    } 

Dies ist die richtige Antwort.

Vielen Dank Farzad Salimi Jazi.

0

Suchen Sie nach dieser Art von verschachtelten ng-Wiederholung?

var app = angular.module('soApp', []); 
app.controller('soController', function ($scope) { 
    $scope.firstName = "John"; 
    $scope.lastName = "Doe"; 
    $scope.sortby_cards = function (sort_value) { 
     console.log(sort_value); 
     $scope.sort_option = sort_value; 
    }; 
    $scope.firstLists = [{name: "def", vote: 2}, {name: "ret", vote: 1}, {name: "ghj", vote: 3}]; 
    $scope.secondLists = [{name: "pqr", vote: 2, attachment_count: 1}, 
     {name: "abc", vote: 1, attachment_count: 3}, 
     {name: "xyz", vote: 3, attachment_count: 2}]; 
});