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);
};