Я использую knockout.repeat сделать динамический массив столбцов со следующими данными:Нокаут с массивами, динамические столбцы
var columns = ko.observableArray([
new Column(1),
new Column(2),
new Column(3),
new Column(4),
new Column(5)
});
var array = ko.observableArray([1..95]);
данных назначается следующим образом с отображением выбывание:
mappingConfig = {
create: function (options) {
return new Row(options.data);
}
};
ko.mapping.fromJS(data, mappingCOnfig, array);
следующим образом:
<div data-bind="repeat: {foreach: array, item: '$row'}">
<div data-bind="repeat: {foreach: column, item: '$col'}">
<input data-bind="value: $row()[$col().Name]"/>
</div>
</div>
проблема у меня в том, что она занимает почти 30 секунд для рендеринга 95 строк с 6 столбцами.
- Как устранить неисправность?
- Есть ли какие-нибудь инструменты?
- Есть ли какие-либо направляющие, как максимизировать производительность в аналогичных сценариях?
Chrome сроки:
UPDATE: Я был под давлением, так что я переписал таблицы в reactjs, которые решаются много вопросов и рендеринга лишь 1,5 сек.
Какой браузер вы используете? –
@ RoyJ Работа с 'Chrome 43.0.2357.81 m' – skmasq
Я помню, что я столкнулся с такой проблемой. Для ~ 1500 строк данных потребовалось несколько минут, чтобы добавить/удалить наборы строк. Я не помню, что я сделал, чтобы облегчить его, но он думает, что в конечном итоге сводилось к тому, что вам нужно было свести к минимуму время, потраченное на создание элементов dom. Много времени было потрачено на GC, который убил его. В моем случае многие элементы dom воссоздавались, потому что объекты данных, которые я привязывал к ним, постоянно перестраивались с нуля. Также обновления должны выполняться в одной партии, не обновляясь отдельно. –