だから私は、TaffyDB を使用して人々のコレクションを作成する本のプロジェクトに取り組んでいます。このプロジェクトは単純なチャットルームで、ウィンドウ内のオンライン ユーザーの HTML リストとしてユーザーのリストが生成されます。現在、私はテストに偽のデータを使用しています。正しく動作する for each ループ (jquery 内) があり、5 つの「アバター」を画面に出力します。しかし、オンライン ユーザーを出力する各ループは 2 回実行されます。 ? これら 2 つのループはまったく同じセットアップを使用しますが、2 番目のループは 2 回実行されます。
動作する for each:
people_db().each(function(person,idx){
var class_list;
if( person.get_is_anon() ){ return true; }
class_list = ['spa-avtr-box'];
if( person.id === chatee.id ){
class_list.push('spa-x-is-user');
}
$box = $('<div/>')
.addClass(class_list.join(' '))
.css( person.css_map )
.attr('data-id', String(person.id) )
.prop( 'title', spa.util_b.encodeHtml(person.name) )
.text( person.name )
.appendTo( $nav );
});
2 回実行されるループ:
people_db().each(function(person,idx){
var select_class = '';
console.log(person);
if( person.get_is_anon() || person.get_is_user() ) {
return true;
}
if( chatee && chatee.id === person.id ){
select_class = 'spa-x-select';
}
list_html
+= '<div class="spa-chat-list-name'
+ select_class + '" data-id="' + person.id + '">'
+ spa.util_b.encodeHtml(person.name) + '</div>';
});
if( !list_html ){
list_html = String()
+ '<div class="spa-chat-list-note">'
+ 'To chat alone is the fate of all great souls...<br><br>'
+ 'No one is online'
+ '</div>';
clearChat();
}
jqueryMap.$list_box.html(list_html);
}
私が間違っていることはありますか?私は自分のコードの残りの部分を広範囲に調べましたが、それを 2 回呼び出しているわけではありません。