2016-11-21 4 views
0

Я новичок в этом угловом js. У меня есть код:Угловой js ng-repeat и фильтр

У меня есть вложенный ng-repeat (один ng-repeat внутри другого). Я хочу упорядочить порядок внутреннего списка с помощью динамических параметров.

ie: значение sort_option - это переменная $ scope, получающая динамически. Это даст весь внутренний список ul в отсортированном порядке. но я хочу сортировать только один список во внутреннем цикле.

<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

попробуйте изменить порядок: нг-повтор = «элемент в списке | фильтр: {due_date_time: current_date_time | OrderBy: sort_option}» –

+0

Это не работает – SARAN

+0

проверить мой ответ, я думаю, что это работает для вас –

ответ

0

Я не уверен, что я правильно понимаю

, но я создал sample code как ваша, и кажется, что он работает отлично

списки являются

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

с

<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> 

и результат

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

изменить линию, как это, добавьте : true в конце фильтра

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

На самом деле у меня есть код:

<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> 

В контроллере:

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

, когда я нажимаю кнопку сортировать по голосам это заказ по внутреннему списку по его заказу. Думаю, теперь вы понимаете мою проблему.

+0

вы должны поставить значение в current_date_time где-то тоже, тогда мой ответ будет работать –

0

я получил ответ:

<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> 

В контроллере:

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

Это правильный ответ.

Thanku Farzad Salimi Jazi.

0

Вы ищете такой вложенный ng-повтор?

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}]; 
}); 
Смежные вопросы