2015-02-07 3 views
0

Итак, я работаю над проектом из книги, в которой TaffyDB используется для создания коллекции людей. Проект представляет собой простой чат, в котором список пользователей создается в виде списка html онлайн-пользователей в окне. В настоящее время я использую поддельные данные для тестирования, и у меня есть один для каждого цикла (в jquery), который работает правильно, печатает пять «аватаров» на экране. Да, мой цикл для печати онлайн-пользователей выполняется дважды: почему это ? Эти две петли используют ту же самую настройку, но вторая выполняется дважды.TackyDB jquery для каждого цикла работает дважды

для каждого, который работает:

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

цикл, который проходит дважды:

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

Любые идеи, что я делаю неправильно? Я подробно рассмотрел остальную часть моего кода, и я не называю его дважды, я почти уверен, что это должно быть что-то с циклом.

ответ

0

Я бы начал, убедившись, что вы не называете это дважды. Если вы посмотрите на консоль, делает

console.log(person); 

печать в два раза? Если да отвязать все, что звонит

people_db().each(function(person,idx){ 

, прежде чем связать его.

Смежные вопросы