2015-12-03 7 views
0

Я пытаюсь сохранить 1 или более значений, находящихся внутри массива, в область. Это результат моей службы JSONP,Как выбрать значение внутри объекта

angular.callbacks._7({ 
    "id":157336,"results":[ 
    {"id":"53db3c790e0a26189a000d09","iso_639_1":"en","key":"ePbKGoIGAXY","name":"Trailer 3","site":"YouTube","size":1080,"type":"Trailer"}, 
    {"id":"550df44b9251413554004d43","iso_639_1":"en","key":"KlyknsTJk0w","name":"Own it today","site":"YouTube","size":720,"type":"Trailer"}, 
    {"id":"533ec6fcc3a3685448009ccc","iso_639_1":"en","key":"nyc6RJEEe0U","name":"Teaser","site":"YouTube","size":720,"type":"Trailer"}, 
    {"id":"5376ab510e0a26141c0005a8","iso_639_1":"en","key":"zSWdZVtXT7E","name":"Trailer","site":"YouTube","size":720,"type":"Trailer"}, 
    {"id":"545da247c3a3685362005187","iso_639_1":"en","key":"Lm8p5rlrSkY","name":"Trailer 2","site":"YouTube","size":1080,"type":"Trailer"} 
    ] 
}) 

И я пытаюсь сохранить все key значения внутри рамки под названием $scope.youtubeTrailer

Но если я делаю это так,

$scope.youtubeTrailer = response; 
console.log ($scope.youtubeTrailer) 

Область состоит из объекта (фильма) и внутри этого объекта представляет собой массив с 5 идентификаторами. Итак, каков был бы правильный селектор для чего-то подобного?

Если я ищу, как это,

console.log ($scope.youtubeTrailer.key) 

я получаю «undefined'

* EDIT *

Я попытался решения ниже,

movieAdd.trailer(movie.id) 
    .then(function(response){ 
    $scope.youtubeTrailer =[]; 
    console.log ($scope.youtubeTrailer) 

    angular.forEach(response.results, function(item){ 
     console.log ('Hello world') 
     if (item.hasOwnProperty('key')) { 
     $scope.youtubeTrailer.push(item.key); 
     } 
    }); 

console.log ($scope.youtubeTrailer) показывает, что scop e пусто. И функция forEach не запускается, потому что Hello log не отображается в консоли. Если я изменю $scope.youtubeTrailer =[]; на $scope.youtubeTrailer = response; У меня есть объект в области, но все равно forEach не срабатывает.

* EDIT 2 *

response.results По changinge в responseforEach делает огонь.

* EDIT 3 *

У меня это несколько работает. Я получал массив в области видимости, но когда я сохранил значение области в функции create, он показал как null в базе данных. Это потому, что я пытался сохранить массив. Использование javascripts join Я преобразовал массив в строку, которую можно сохранить.

movieAdd.trailer(movie.id) 
    .then(function(response){ 
    $scope.youtubeTrailer = []; 
    angular.forEach(response, function(item){ 
     if (item.hasOwnProperty('key')) { 
     $scope.youtubeTrailer.push(item.key); 
     var youtubeArray = $scope.youtubeTrailer 
     var youtubeString = youtubeArray.join(); 

ответ

3

Код в основном представляет собой цикл по массиву response.results, который содержит 5 объектов. Каждому объекту присваивается переменная item. Check item имеет свойство key, если значение true, добавьте значение item.key в $scope.youtubeTrailer.

$scope.youtubeTrailer =[]; 
angular.forEach(response.results, function(item) { 
    if (item.hasOwnProperty('key')) { 
    $scope.youtubeTrailer.push(item.key); 
    } 
}); 

Вот эта ссылка для Angular ForEach.

+0

Благодарим вас за ввод. Я пытался работать с кодом в контроллере, но похоже, что функция 'forEach' не срабатывает. Я обновил свой вопрос, чтобы показать проблему. –

+1

Можете ли вы показать реализацию 'moiveAdd.trailer'? Мне интересно, что, возможно, «сервис» вызывает проблему. Можете ли вы 'console.log (response)' перед функцией 'forEach' и опубликовать журнал? –

+0

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

1

$scope.youtubeTrailer не только объект, он содержит массив и ее внутри этого массива, что поле является key. Таким образом, вам понадобится доступ к пяти внутренним элементам с доступом к массиву. например $scope.youtubeTrailer.results[0].key

+0

Где я могу использовать этот код? Потому что я получаю 'TypeError: Не могу прочитать свойство '0' неопределенной ошибки, если я поместил его после вызова' .then'. –

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