2016-09-25 1 views
-1

проблема заключается в том, что данные не могут использоваться в контроллере, потому что они всегда неопределены, я думаю, это связано с тем, что возврат является обещанием, которое не было разрешено раньше запустите контроллер, пожалуйста, помогите .. вот мой код.Вложенный объект не определен в контроллере, в то время как весь объект может быть прочитан

.factory('channelsFactory', ['$resource', 'baseURL', function($resource, baseURL) { 


     return $resource(baseURL+"channels/:id",null,{'update':{method:'PUT' }}); 

    }]) 

это контроллер в моем controllers.js

.controller('videoController',[ '$scope','$http', 'baseURL','channelsFactory','channel',function($scope, $http, baseURL,channelsFactory, channel){ 


    $scope.baseURL= baseURL; 
    $scope.channel= channel; 
    console.log(channel)// I can see the promised data just fine 

$scope.videos = []; 
$scope.youtubeParams = { 
    key: 'AIzaSyAc6Su5lq1-OIXHu3VMfssPM5RzY8F2tPk', 
    type: 'video', 
    maxResults: '20', 
    part: 'id,snippet', 
    q:'', 
    order: 'date', 
    channelId:channel.channelid,//undfined 
    $http.get('https://www.googleapis.com/youtube/v3/search', {params:$scope.youtubeParams}).success(function(response){ 


angular.forEach(response.items, function(child){ 
    $scope.videos.push(child); 
     console.log(child); 
    }); 
}); 

и здесь есть вид в app.js

.state('app.channelvideos', { 
url: '/channelsList/:id', 
views: { 
    'mainContent': { 
    templateUrl: 'templates/channelvideos.html', 
    controller: 'videoController', 
     resolve: { 

      channel: ['channelsFactory','$stateParams', function(channelsFactory,$stateParams){ 

        return channelsFactory.get({id:parseInt($stateParams.id,10)}) 


       }] 
     } 
    } 
} 


}) 
+0

Вы исследовали сетевой запрос и ответ? Решение ожидающих обещаний должно быть прекрасным. –

+0

yes Я могу прочитать ответ в консоли, но при попытке прочитать вложенный объект, такой как console.log (channel.id), он возвращает undefined также –

ответ

0

где вы использовать $scope.youtubeParams?, Если это используется в событии триггера, вы можете поместить этот код в функцию триггерного события. Попробуйте показать $ scope.channel в вашем html, например {{channel}}, чтобы узнать, есть ли у вас правильный объект

0

спасибо, наконец, я нашел статью, в которой речь шла о моей проблеме, и решение заключалось в том, чтобы заставить углы разрешить ресурс в ui-router, и решение было всего лишь одним словом, поэтому этот фрагмент кода будет отредактирован как указано ниже

return channelsFactory.get({id:parseInt($stateParams.id,10)}).$promise; 
Смежные вопросы