2014-09-25 4 views
0

Я пытаюсь разработать код, который содержит следующие реакции JSonOrderBy на одного JSon объекта нг-повтора

{ 
    "Title": "Harry Potter and the Sorcerer's Stone", 
    "Year": "2001", 
    "Rated": "PG", 
    "Released": "16 Nov 2001", 
    "Runtime": "152 min", 
    "Genre": "Adventure, Family, Fantasy", 
    "Director": "Chris Columbus", 
    "Writer": "J.K. Rowling (novel), Steve Kloves (screenplay)", 
    "Actors": "Richard Harris, Maggie Smith, Robbie Coltrane, Saunders Triplets", 
    "Plot": "Rescued from the outrageous neglect of his aunt and uncle, a young boy with a great destiny proves his worth while attending Hogwarts School of Witchcraft and Wizardry.", 
    "Language": "English", 
    "Country": "UK, USA", 
    "Awards": "Nominated for 3 Oscars. Another 15 wins & 58 nominations.", 
    "Poster": "http://ia.media-imdb.com/images/M/MV5BMTYwNTM5NDkzNV5BMl5BanBnXkFtZTYwODQ4MzY5._V1_SX300.jpg", 
    "Metascore": "64", 
    "imdbRating": "7.4", 
    "imdbVotes": "344,737", 
    "imdbID": "tt0241527", 
    "Type": "movie", 
    "Response": "True" 
} 

Я итерация ключи и значения, как показано ниже:

<div class="card" ng-repeat="(key,value) in movie"> 
    <div class="item item-divider positive"> 
     {{ key }} 
    </div> 
    <div class="item item-text-wrap"> 
     {{ value }} 
    </div> 
</div> 

Это вызывает пункты для отображения в порядке возрастания клавиш [Актеры, Награды ...]. Как я могу показать его, не изменяя его порядок?

+0

так, что будет вашим критериям для сортировки? – meriadec

+2

Возможный дубликат [директива ng-repeat сортировать данные при использовании (ключ, значение)] (http://stackoverflow.com/questions/19676694/ng-repeat-directive-sort-the-data-when-using-key -value) – sma

+0

@meriadec порядок, в котором ключи заданы в ответе для объекта json: «Title», «Year», «Rated» и т. д. Это интересный вопрос, я никогда не сталкивался с ситуацией, подобной это до – Josep

ответ

0

Вы можете попробовать так:

function demo ($scope) { 
 
    
 
    var data = { 
 
    "Title": "Harry Potter and the Sorcerer's Stone", 
 
    "Year": "2001", 
 
    "Rated": "PG", 
 
    "Released": "16 Nov 2001", 
 
    "Runtime": "152 min", 
 
    "Genre": "Adventure, Family, Fantasy", 
 
    "Director": "Chris Columbus", 
 
    "Writer": "J.K. Rowling (novel), Steve Kloves (screenplay)", 
 
    "Actors": "Richard Harris, Maggie Smith, Robbie Coltrane, Saunders Triplets", 
 
    }; 
 
    
 
    var order = ['Title', 'Year', 'Rated', 'Released', 'Runtime', 'Genre', 'Director', 'Writer', 'Actors']; 
 
    
 
    function setOrder (obj) { 
 
    var out = []; 
 
    order.forEach(function (key) { 
 
     out.push({ title: key, value: obj[key] }); 
 
    }); 
 
    return out; 
 
    } 
 
    
 
    $scope.items = setOrder(data); 
 
    
 
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 

 
<div ng-app ng-controller="demo"> 
 

 
    <table> 
 
    <tr ng-repeat="item in items"> 
 
     <td>{{ item.title }}</td> 
 
     <td>{{ item.value }}</td> 
 
    </tr> 
 
    </table> 
 

 
</div>

+0

Ничего себе! Благодарю. Это была странная проблема. – Tejas

+1

np :) предпочитают всегда использовать таблицу для 'ngRepeat', она более удобна для сортировки, фильтрации и т. Д. – meriadec