Javascript anguarl1 ng repeat在父ng init中异步返回的项上

Javascript anguarl1 ng repeat在父ng init中异步返回的项上,javascript,angularjs,angularfire,Javascript,Angularjs,Angularfire,我正在努力对父元素ng init中返回的项目进行。我觉得这个数组的ng init初始化的异步性质导致ng repeat无法呈现。这是我的HTML/角度设置 <span ng-click=\"showArtist(song.artist.key)\" class=\"song_alias\" ng-init=\"collabSongs = getSongsFromCollab(song.collaboration_id); \" > {{song.artist.alias}}

我正在努力对父元素
ng init
中返回的项目进行
。我觉得这个数组的
ng init
初始化的异步性质导致
ng repeat
无法呈现。这是我的HTML/角度设置

<span ng-click=\"showArtist(song.artist.key)\" class=\"song_alias\" 
ng-init=\"collabSongs = getSongsFromCollab(song.collaboration_id); \" >
   {{song.artist.alias}}
   <span ng-repeat=\"songItem in collabSongs\" 
     ng-init=\"songCollabItem = songForKey(songItem); index = $index\">
      {{index != (collabSongs.length - 1) ? songCollabItem.artist.alias : 'goo'}}
   </span>
</span>
此处的firebase调用函数用于在父级的
ng init

    $scope.getSongsFromCollab = function(collaboration) {
  console.log('getSongs' , collaboration);
  var songsRef =  new Firebase(FBURL + 'collaboration_songs').child(collaboration).child('songs');
  songsRef.once("value", function(data){
      var val = data.val();
      var array_of_songs = [];
      var keys = Object.keys(val);
      for (var i= 0; i<keys.length; i++){
        array_of_songs.push(val[keys[i]]);
      }
      console.log(array_of_songs);
      return array_of_songs;
  });

};
$scope.getsongsfromclab=函数(协作){
console.log('getSongs',协作);
var songsRef=new Firebase(FBURL+‘协作歌曲’).child(协作)。child(‘歌曲’);
songsRef.once(“值”),函数(数据){
var val=data.val();
var数组_of_songs=[];
var keys=Object.keys(val);

对于(var i=0;i我想我可以做以下几点

   $scope.getSongsFromCollab = function(collaboration) {
    var songsRef =  new Firebase(FBURL + 'collaboration_songs').child(collaboration).child('songs');
    return $firebaseArray(songsRef);
};

angularfire使用angularfire绑定从firebased返回的异步对象非常神奇。我想听听任何解释!

collabSongs
被设置为
getSongsFromCollab
的返回值,而不是
songsRef.的回调函数的返回值。一旦
。您正在尝试同步设置一个值e从异步函数返回。$firebaseArray同步返回一个数组,该数组随后将填充数据。

如果检查$firebaseArray的返回值,您将看到它最初是一个空数组。
   $scope.getSongsFromCollab = function(collaboration) {
    var songsRef =  new Firebase(FBURL + 'collaboration_songs').child(collaboration).child('songs');
    return $firebaseArray(songsRef);
};