У меня есть приложение-журнал, в котором у меня есть необычное дерево, отображающее записи журнала для пользователя, вошедшего в систему. Ниже этого дерева у меня есть другое необычное дерево с раскрывающимся списком над ним, которое позволяет выбирать других пользователей и просматривать их записи в журнале.Как только вы выбираете пользователя, он захватывает его идентификатор пользователя, а затем загружает второе дерево с его записями.Это прекрасно работает до седьмого выбора, когда дерево зависает и в основном убивает мой сеанс Tomcat.Я должен перезапустить Tomcat, чтобы исправить это.
Мой HTML-код:
<div class="journalList left-column">
<div id="logTree"></div>
<div class="browser">
<div class="userWrapper">
<h4>Browse Other User Logs</h4>
<select id="otherUser">
</select>
</div>
<div id="browseTree"></div>
</div>
</div>
Идентификатор logTree - это необычное дерево для пользователя, вошедшего в систему. BrowseTree предназначено для выбранногоuser.
Соответствующий код в JavaScript для # logTree.
$('#logTree').fancytree({
source: {
type: 'post',
cache: false,
url: "/LogbookServlet",
data: {action:"init", sub:"logtree"},
datatype: 'json'
},
lazyLoad: function(event, data) {
var node = data.node;
data.result = getLogTreeData(node.key);
},
loadChildren: function(event, data) {
var node = data.node;
var activeNode = $("#logTree").fancytree("getActiveNode");
if (activeNode) {
activeNode.setExpanded(true);
var mon = new Date().getMonth();
var curMonth = months[mon];
var children = activeNode.getChildren();
if (children) {
for (var i = 0; i < children.length; i++) {
var childNode = children[i];
var title = childNode.title;
if (title == curMonth) {
$("#logTree")
.fancytree("getTree")
.activateKey(childNode.key);
}
}
}
}
}
});
Этот раздел кода вызывается при первой загрузке страницы:
var otherUsrId;
$('#browseTree').fancytree({
source: [],
lazyLoad: function(event, data) {
var node = data.node;
data.result = getLogTreeData(node.key, otherUsrId);
},
loadChildren: function(event, data) {
var node = data.node;
}
});
У меня естьобработчик для выбора, чтобы обнаружить смену пользователей:
$('#otherUser').on('change select', function() {
// Get the User ID from the Select
otherUsrId = $(this).val();
getUserTree(otherUsrId);
});
А вот код для getUserTree ():
function getUserTree(otherUsrId) {
var userTree = $('#browseTree').fancytree("getTree");
userTree.reload({
url: "/LogbookServlet",
data: {action:"init", sub:"logtree", otherUsrId:otherUsrId},
datatype: 'json'
});
}
Итак, после выбора пользователя в 7-й раз,Необычное дерево "browseTree" просто зависает при вращающемся значке загрузки, и это убивает мой браузер.Есть идеи?Похоже, что-то вызывается слишком рекурсивно?Не уверен.