anguarl1 ng-repeat 在 parents ng-init 中异步返回的项目
anguarl1 ng-repeat on items returned async in parents ng-init
我正在努力对 parent 元素 ng-init
中返回的项目设置 <ng-repeat>
。我觉得这个数组的 ng-init
初始化的异步性质导致 ng-repeat
无法呈现。这是我的 HTML/angular 设置
<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>
然而,即使我注销 getSongsFromCollab()
正在正确返回一个非零元素数组 (2) 尽管是异步的,但我没有看到内部 <span>
在 dom 而不是只看:
<!-- ngRepeat: songItem in collabSongs -->
此处供参考的是在 parent 的 ng-init
中填充 collabSongs 的 firebase 调用函数
$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.getSongsFromCollab = function(collaboration) {
var songsRef = new Firebase(FBURL + 'collaboration_songs').child(collaboration).child('songs');
return $firebaseArray(songsRef);
};
angularfire 可以神奇地将来自 firebased 的异步对象 return 与 angular 绑定。我很想听听任何解释!
collabSongs
设置为getSongsFromCollab
的return值,不是songsRef.once
回调函数的return值。您正在尝试从异步函数同步设置一个值 returned。 $firebaseArray 同步 returns 一个稍后用数据填充的数组。
我正在努力对 parent 元素 ng-init
中返回的项目设置 <ng-repeat>
。我觉得这个数组的 ng-init
初始化的异步性质导致 ng-repeat
无法呈现。这是我的 HTML/angular 设置
<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>
然而,即使我注销 getSongsFromCollab()
正在正确返回一个非零元素数组 (2) 尽管是异步的,但我没有看到内部 <span>
在 dom 而不是只看:
<!-- ngRepeat: songItem in collabSongs -->
此处供参考的是在 parent 的 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.getSongsFromCollab = function(collaboration) {
var songsRef = new Firebase(FBURL + 'collaboration_songs').child(collaboration).child('songs');
return $firebaseArray(songsRef);
};
angularfire 可以神奇地将来自 firebased 的异步对象 return 与 angular 绑定。我很想听听任何解释!
collabSongs
设置为getSongsFromCollab
的return值,不是songsRef.once
回调函数的return值。您正在尝试从异步函数同步设置一个值 returned。 $firebaseArray 同步 returns 一个稍后用数据填充的数组。