2017-11-09 10 views
0

입력 할 사용자 문자열을 제출해야하는 양식이 있습니다. 제출되면 입력 값을 매개 변수로 사용하여 서비스를 통해 범위 값이 생성됩니다. 이 범위 값은 내보기의 나머지 부분을 채우는 데 사용됩니다.

이 스코프 값의 각 항목에 대해 일부 기능의 반환이 필요하다는 것을 제외하면 모든 것이 훌륭합니다. 뷰에서 호출하려고하지만 무한 루프가 발생합니다.

여기 진행하는 방법을 모릅니다. 너희들이 날 도와 줄 수있어?

view.pug

form(ng-submit='userGetTopTracksReq(user)') 
    .form-group 
     label(for='user') User: 
     input#user.form-control(ng-model='user' placeholder='user') 
    .form-group 
     button.btn.btn-success.btn-block(type='submit') Request 
hr 
table.table.table-sm.table-hover(ng-show='userGetTopTracksRes.toptracks') 
    thead 
     tr 
      th Artist 
      th Track 
      th Playcount 
      th Total Playcount 
    tbody 
     tr(ng-repeat='track in userGetTopTracksRes.toptracks.track') 
      td {{track.artist.name}} 
      td {{track.name}} 
      td {{track.playcount}} 
      td {{trackGetInfoReq(track.artist.name, track.name).track.playcount}} 

controller.js

angular.module('app') 
    .controller('userGetTopTracksController', function(lastFmService, $scope, $rootScope) { 
     $scope.userGetTopTracksReq = (user) => { 
      $scope.userGetTopTracksRes = lastFmService.get({ 
       api_key: $rootScope.api_key, 
       method: 'user.getTopTracks', 
       user: user, 
       format: 'json', 
       limit: 400 
      }); 
     }; 

     $scope.trackGetInfoReq = (artist, track) => { 
      return lastFmService.get({ 
       api_key: $rootScope.api_key, 
       method: 'track.getInfo', 
       artist: artist, 
       track: track, 
       format: 'json' 
      }); 
     }; 
    }); 

템플릿에서 services.js

angular.module('app') 
    .factory('lastFmService', function($resource) { 
     return $resource('http://ws.audioscrobbler.com/2.0/', {}); 
    }); 

답변

0

, 당신은 함수를 호출하고 싶습니다. 따라서 반환 값으로 멤버에 액세스하기 전에 함수를 먼저 호출해야합니다. 예를 들어, 반복에서 : track in userGetTopTracksRes().toptracks.track.

+0

이 bcuz와 같이 부를 수는 없습니다. userGetTopTracksRes는 $ resource.get()을 수신하며 함수가 아닙니다. –

0

모든 것을 반환하는 대신 표시하려는 값을 반환하지 않는 이유는 무엇입니까?

$scope.trackGetInfoReq = (artist, track) => { 
    let data = lastFmService.get({ 
     api_key: $rootScope.api_key, 
     method: 'track.getInfo', 
     artist: artist, 
     track: track, 
     format: 'json' 
    }); 
    return data.track.playcount; 
};