![]() |
|
||||||||||
|
|
|
|||||
|
Есть кнопка у которой есть следующий код:
if ( myFunction() ) { trace ("ok"); } else { trace ("oops"); } код функции: function getFailedLessons (ChapterID) { trace("getFailedLessons:"); query = new LoadVars(); query.action = "getFailedLessons"; query.ChapterID = ChapterID; query.sendAndLoad(_root.scriptName, query, 'POST'); query.onLoad = function() { if (this.FailedLessons != undefined) { return false; } else { return true; } }; } Как сделать так, чтобы пока функция не отработала проверка в кнопке не срабатывала, а то получается так, что данные еще не получены, а проверка уже срабатывает и выводит oops |
|
|||||
|
don't panic!
Регистрация: Aug 2001
Сообщений: 4,121
|
будь проще :)
убрать проверку и всё что там происходит с кнопки, и поместить это всё прямо в онЛоад. а на кнопке написать только вызов getFailedLessons (ChapterID); |
|
|||||
|
Можно конечно и так сделать, но тогда теряется весь смысл, функция не должна знать ничего о других, её задача получить данные, обработать их вернуть результат. А приложение уже должно в зависимости от результата реагировать...
У меня таких функций несколько предполагается, не могут же все они быть друг в друге ? |
|
|||||
|
don't panic!
Регистрация: Aug 2001
Сообщений: 4,121
|
Цитата:
ты уже нарушил принцип инкапсуляции, как только стал пользоваться в функции внешней переменной: query = new LoadVars(); - так какая разница ? :) я обычно передаю в функцию, которая стартует загрузку чего-то в качестве параметра ссылку на функцию, которой надо отдать результат операции, каков бы он ни был. если хочешь чтобы всё было чисто - делай так. но надо ли оно тебе ? :) loadData = function (source, parser) {
var loader = new LoadVars();
loader.parser = parser;
loader.onData = function(result) {
this.parser(result);
};
loader.load(source);
};
LoadVars.decode(query_string) |
![]() |
Часовой пояс GMT +4, время: 07:24. |
|
|
« Предыдущая тема | Следующая тема » |
|
|