Skip to content

Commit 95bd6be

Browse files
author
Roman Kartsev
committed
fix #652
1 parent 8a646a1 commit 95bd6be

File tree

1 file changed

+24
-0
lines changed

1 file changed

+24
-0
lines changed

src/ns.view.js

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -951,6 +951,8 @@
951951
// всегда собираем данные, в том числе закешированные модели для async-view
952952
tree.models = this._getModelsForTree();
953953

954+
this._fixTreeStateByModels(tree);
955+
954956
// для асинхронного вида не идем вниз по дереву
955957
if (tree.state === 'loading') {
956958
return tree;
@@ -968,6 +970,28 @@
968970
return tree;
969971
};
970972

973+
/**
974+
* Обновляем состояние отрисовки дерева исходя из состояния моделей.
975+
* @param {ns.View~UpdateTree} tree Дерево для шаблонизации вида.
976+
* @private
977+
*/
978+
ns.View.prototype._fixTreeStateByModels = function(tree) {
979+
var hasLoadingModels = false;
980+
981+
for (var id in tree.models) {
982+
// Если модель в статусе ошибки (это может быть и не ошибка, но так устроен _getModelsForTree)
983+
// и при этом самой ошибки нет - значит, возможно, она ещё не загрузилась.
984+
if (tree.models[id].status === 'error' && !tree.models[id][id]) {
985+
hasLoadingModels = true;
986+
break;
987+
}
988+
}
989+
990+
if (hasLoadingModels) {
991+
tree.state = 'loading';
992+
}
993+
};
994+
971995
/**
972996
* Дополняет дерево видов.
973997
* @description

0 commit comments

Comments
 (0)