2015-06-05 4 views
1

Я работаю над одностраничным приложением, используя динамическую маршрутизацию. Я получаю BookID от URL, как показано нижеAngularJS - Фильтрация Json переменной

myApp.controller('BookCtrl', function($scope,$routeParams) { 
    $scope.mybookid=$routeParams.bookurl; 
}); 

Вот мои данные

var bookdata = { 
"records": [ 
    { 
    "seriesid": "SpectrumSeries", 
    "name": "White Curse", 
    "bookid": "WhiteCurse", 
    "image": "book1", 
    } 

... 
]}; 

В приведенном выше контроллера, как я отфильтровать объект, который имеет BookID, что равняется $ scope.mybookid? Я знаю, что могу сделать это с помощью ng-repeat и фильтра, но есть ли более эффективный способ?

+0

является 'bookid' уникальным в' records'? – Grundy

+0

Да, это уникально – CuriousHenry

+0

, поэтому вместо массива вы можете использовать объект и просто получить значение по имени свойства, например: 'var bookdata = { " records ": { " WhiteCurse ": { " seriesid ":" SpectrumSeries "," «имя»: «Белое проклятие», «bookid»: «WhiteCurse», «image»: «book1», } ', а затем' records [$ scope.mybookid] ' – Grundy

ответ

1

Использование фильтра в JavaScript:

var filteredBooks = bookdata.records.filter(function(book){ 
    return book.bookid == $scope.mybookid; 
}); 

filteredBooks массив будет содержит всю книгу с вашим BookID.

+0

получить свойство от объекта, я думаю, что более эффективно, чем фильтрация массива – Grundy

Смежные вопросы