Вкладки Javascript, показывающие два разных набора информации с одинаковыми типами переменных ядра - PullRequest
1 голос
/ 07 октября 2008

Итак, у меня две вкладки, которые содержат обычные и специальные электронные письма. Чтобы получать электронные письма, вы должны нажать на календарную дату, и AJAX затем запросит в базе данных обычные электронные письма и специальные электронные письма. Существует следующая и предыдущая кнопка для навигации по результатам, полученным за выбранную дату. У меня проблема в том, что, поскольку каждая вкладка отслеживает отдельный набор сообщений электронной почты, количество сообщений электронной почты, просмотр электронной почты n из n и текущую электронную почту .

Я думал, что я мог бы использовать сеттеры и геттеры для каждой общей переменной. По сути, если я позвонил getEmailCount () , находясь на первой вкладке, я получу счетчик электронной почты для обычных писем, проверив, какая вкладка активна в данный момент. Единственная причина, по которой я спрашиваю, состоит в том, что я не думаю, что лучше проверить, какая вкладка активна в каждой функции. Я немного погуглил, но на самом деле не знал, что мне нужно было искать.

Редактировать: запросы AJAX вызываются только тогда, когда пользователь выбирает новую дату в календаре. Если есть результаты, электронные письма хранятся в отдельных массивах. И если нет результатов, ничего не происходит. Что касается поведения вкладок, все довольно просто. Единственная ответственность вкладок заключается в отображении информации электронной почты в таблицах HTML. Кнопки «Следующая» и «Предыдущая» используются для навигации по электронной почте.

Есть мысли?

1 Ответ

1 голос
/ 07 октября 2008

Я бы разработал это как один объект результатов, который содержал две отдельные коллекции. Ссылка в объекте приложения будет ссылаться на активную коллекцию, и все операции (если не указано) будут работать с активной коллекцией.

Пример кода:

AJAX возвращает данные JSONP:

<code>
yourappobject.loadResults(
    {
        regular: [{subject: "Subject", from: "From"...},{..}...],
        special: [{subject: "Subject", from: "From"...},{...}...]
    }
);


function yourappobject() {
    var _results = {regular: [], special: []};
    var _active = _results["regular"];
    var _tab = "regular";</p>

<pre><code>this.loadResults = function(data) {
    _results = data;
};

// pass "regular" or "special"
this.setActive = function(tab) {
    _active = results[tab];
    _tab = tab;
};

this.getEmailCount = function(collection) {
    var collection = collection || _active;
    return collection.length;
};

};

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...