переопределить тело метода javascript

#javascript #jquery #asp.net #jquery-ui

#javascript #jquery #asp.net #jquery-пользовательский интерфейс

Вопрос:

у меня есть диалоговое окно jquery, которое определено следующим образом (часть кода, показанная здесь)

  buttons: {
                    "Opslaan": function() {
                        Opslaan();
                        $(this).dialog("close");
                    },
                    "Annuleren": function() {
                        $(this).dialog("close");
                    }
                }
  

Opslaan() Функция De определяется с пустым телом ( function Opslaan(){} ).

Теперь диалоговое окно открывается из разных мест, поэтому я хочу, чтобы при открытии диалогового окна определялось тело Opslaan() метода, потому что он должен сохранять данные в диалоговом окне, но они вводятся в этих разных местах, поэтому метод Opslaan (Save) должен все время отличаться.

Одна вещь, о которой я подумал, это передать фактический метод в диалоговое окно при его открытии (таким образом, заменить статический opslaan(); вызов переданным методом), но я не знаю, возможно ли это

Итак, в псевдокоде, когда пользователь нажимает кнопку

  • получить html для диалога
  • переопределите метод A (поместите правильный javascript в тело или позвольте методу Opslaan указывать на метод OpslaanA()
  • открыть диалоговое окно

Комментарии:

1. что делает ` body (функция Opslaan(){})`?

2. в диалоговое окно вводится несколько текстовых полей. Диалоговое окно используется для 4 разных маленьких crud-экранов. Затем, когда пользователь нажимает Opslaan (означает «сохранить»), он должен вызвать правильный метод сохранения, чтобы проанализировать введенный html, потому что html отличается во всех 4 случаях. Таким образом, метод Opslaan просматривает HTML-код в диалоговом окне и получает значения из текстовых полей и создает для него вызов веб-службы. Итак, когда вы нажимаете кнопку ‘Opslaan’, я хочу вызвать разные реализации этого метода в зависимости от введенного html в диалоговом окне. Это отвечает на ваш вопрос?

3. хорошо, я думаю, у вас есть 4 разных метода opslaan на каждой странице, верно? у этого разные инструкции? в таком случае проверьте это окно. Opslaan существует первым или что он находится в вашем dom до того, как пользователь должен нажать кнопку, я не знаю, почему вы не можете использовать serialize() метод для передачи ваших post / get данных, надеюсь, это поможет, если нет, разместите несколько примеров кодов для каждой страницы или как это работает в кодах 🙂

Ответ №1:

Передача уникальной функции в качестве аргумента для универсальной функции — отличный способ справиться с этим. Вот простая демонстрация:

 var save = function(saveFunction) {
    saveFunction();

    // common code 
    alert('common code');
}

var aSaveFunction = function() {
    alert('aSaveFunction Called.');
};

$('#one').click(function() {
    save(aSaveFunction);
});

var aDifferentSaveFunction = function() {
    alert('aDifferentSaveFunction Called.');
};

$('#two').click(function() {
    save(aDifferentSaveFunction);
});
  

Или посмотреть на скрипку в действии: http://jsfiddle.net/peteorpeter/7H3mm/3 /

Кроме того, для получения дополнительной информации о функциях javascript как объектах: http://www.sergiopereira.com/articles/advjs.html , ищите: «Что вы имеете в виду? Функция тоже является объектом?».