Maxmaxmaximus4, просто если скрипт не работает в фрейме, значить с ним что то не так?
|
Цитата:
например тут был баг когда пришлось очистить кэш вручную чтобы новая версия ui заработала, хотя время жизни стоит 0. теперь ты понял что был не прав пошутив про танцора? ну а чо) норм так на пеньке то четвертом, а у вас что показывает? 5к элементов <script src='//mychamber.ru/build/ui.js'></script> <ul controller="Chat"> <button click="reverse()">reverse</button> <li repeat="item in items">{item}</li> </ul> <script> function Chat() { items = genArr(5000) reverse = function() { items = items.reverse() } } function genArr(cnt) { var arr = []; for (var i = 0; i < cnt; i++) { arr[i] = Math.round(Math.random()) ? Math.random() : i; } return arr; } </script> |
Maxmaxmaximus4, я тут немного завис, как ты сделал scope для функции так что бы items не был глобальной переменной? О_о
П.с Возможно я уже туплю. |
Цитата:
Пенек пеньком, бывает же такое)) |
Цитата:
|
Maxmaxmaximus4,, епать я затупил, короче можно сделать что бы в пару раз быстрее работало)
нужно добавить проверку function compare(fArr,arr) { var search = arr.slice(), insert = [], remove = [], replace = []; for(var i = 0, index; i < fArr.length; i++) { if(fArr[i] === arr[i]){// вот эта проверка delete search[i]; continue; } index = search.indexOf(fArr[i]); if(!~index) { remove.push(i); continue; } i != index && replace.push({old: i, new: index}); delete search[index]; }; search.forEach(function (elem, i) { if(elem) insert.push(i); }); return { remove: remove, insert: insert, replace: replace } } |
Китайский городовой, ЕПАТЬ Я БЛ** кактус, короче массив на 10к элементов за 200 милесекунд
http://learn.javascript.ru/play/20fUc function compare(fArr,arr) { var search = arr.slice(), insert = [], remove = [], replace = []; for(var i = 0, index; i < fArr.length; i++) { if(fArr[i] === arr[i]){ search[i] = null; // убираем на фиг delete continue; } index = search.indexOf(fArr[i]); if(!~index) { remove.push(i); continue; } i != index && replace.push({old: i, new: index}); search[index] = null; // убираем на фиг delete }; search.forEach(function (elem, i) { if(elem) insert.push(i); }); return { remove: remove, insert: insert, replace: replace } } |
Цитата:
controller='Ctrl as obj' и обращаться уже нужно будет уже как obj.items а не просто items ^____^ а еще есть frp стиль, в котором и рекомендуется писать. (это) синтаксис ячеек, если то что приравнивается в поле контроллера обернуто в ячейки то оно оборачивается в функцию и вешается геттер на это поле, так что значение там будет всегда актуальное. <script src='//mychamber.ru/build/ui.js'></script> <div controller="Ctrl"> <button click="up()">up</button> {a} плюс {b} ровно: {c} </div> <script> function Ctrl() { a = 11 b = 20 c = (a + b) up = function() { a++ } } </script> cyber, почему ты проверяешь ячейку так if(elem) insert.push(i); ?? я что, нули не могу хранить в массиве теперь и пустые строки? |
Цитата:
|
function compare(fArr,arr) { var search = arr.slice(), insert = [], remove = [], replace = []; for(var i = 0, index; i < fArr.length; i++) { if(fArr[i] === arr[i]){ search[i] = undefined; continue; } index = search.indexOf(fArr[i]); if(!~index) { remove.push(i); continue; } i != index && replace.push({old: i, new: index}); search[index] = undefined; }; search.forEach(function (elem, i) { if(elem !== undefined) insert.push(i); }); return { remove: remove, insert: insert, replace: replace } } |
Часовой пояс GMT +3, время: 06:56. |