У меня есть два синглета:
Поиск - выполняет функции поиска
Тема - представление тем (результатов поиска)
var Search = new function () {
this.GetTopics = function () {
var query = $("#globalSearch").val();
$.ajax({
url: 'Search/GetTopics',
dataType: 'json',
data: { query: query },
success: function (result) {
var links = $("<ul />")
.click(function (event) {
Search.OpenTopicContent(event);
});
$.each(result.Topics, function (key, value) {
links.append(
Topic.FormatTopic(value.Name, value.Id, value.Rank)
);
});
$("#searchResult").empty();
$("#searchResult").html(links);
}
}
}();
Это тема синглтона:
var Topic = new function () {
this.FormatTopic = function (name, id, rank) {
var li = $("<li />")
.attr("id", id)
.addClass("{rank:" + rank + "}")
var topicName = $("<p />")
.append(name)
.addClass("tName");
return li.append(topicName);
}
}();
Вот вызов
$("#searchButton").click( function () { Search.GetTopics() });
Итак, Search.GetTopics () должен отформатировать список тем и представить их в div # searchResult.
Количествотемы могут быть около 100.
Проблема в том, что каждый поисковый вызов увеличивает использование памяти на 1-3Мб.Это происходит в IE8 и Firefox.
Это RIA с долго выполняющимися сценариями, поэтому важно ограничить использование памяти.
В чем проблема?Как я могу оптимизировать код, рефакторинг?Разумно ли использовать синглтоны таким образом?