В будущем когда source.assign(target) получит законную силу, перепишешь свой скрипт на одну строку
messages.assign(json); https://developer.mozilla.org/ru/doc.../Object/assign |
Вложений: 1
рони, не надо картинок постить, у меня с двача лягушек на мегабайт.
|
Цитата:
|
function getMessages(){ if(messages.length===0){ $.ajax({ type: 'post', data: 'getMessages', cache: false, dataType: 'json', success: function(answer){ pushMessages(answer); }, }); }else{ //Если не первая загрузка добавляем в ajax новую переменную. } } function pushMessages(answer){ for(var i=0;i<answer.length;i++){ messages[answer[i].id] = new Object(); messages[answer[i].id].text = answer[i].text; messages[answer[i].id].time = answer[i].time; messages[answer[i].id].sender = answer[i].sender; } updateMessages(); } Я думаю пойдет для начала) |
Для начала посмотри, что получается, если переписать твою пушнину нормальным языком
function pushMessages(data){ var row; for(var i=0;i<data.length;i++){ row=data[i]; messages[row.id] = { id:row.id, text:row.text, time:row.time, text:sender.sender, } } } То есть это не все, просто я хочу чтобы ты сам допер, как все просто. |
То есть, если в answer нет ничего лишнего или оно не помешает, то пушнина вырождается в
function pushMessages(data){ for(var i=0;i<data.length;i++) messages[data[i].id] = data[i]; } Сравни код выше с тем, который я постил от балды и найди отличия. ))) И все что тебе не хватает - это id сразу в выдаче с сервера, о чем я сразу же на капу и нажал. |
Цитата:
|
Цитата:
|
Допустим ты отрендерил ленту по полученным данным и пришли новые. Так ты просто заменяй messages на answer, то есть в калбеке аякса messages = answer и сразу на рендер.
|
Цитата:
Цитата:
|
Часовой пояс GMT +3, время: 08:24. |