Отключение настраиваемых обработчиков привязки — несколько аргументов и передовой опыт обратных вызовов функций?

Недавно я создал обработчик привязки, чтобы включить подключаемый модуль JQuery Validation в форму с использованием синтаксиса привязки данных. Я обнаружил, что мне нужно предоставить более одной информации обработчику. Мне нужно было указать флаг для принудительной проверки и обратный вызов для запуска после прохождения проверки.

Вопросы:

  1. Как лучше использовать несколько аргументов? Я просто полагался на синтаксис нотации объекта, но также мог предоставить другую привязку и проверить эту привязку через параметр allBindings, переданный обработчику...

  2. Как лучше всего предоставить функцию обратного вызова обработчику?

Ниже приведен код js, определяющий обработчик, и html-код для применения обработчика:

     <form id="step1" 
        data-bind="jqValidation:{enforce: true, 
                                 submitHandler: doSomethingInVM}">
           <fieldset data-bind="with:searchRequest">
            //fields
           </fieldset>
           <button type="submit">submit</button>
     </form>

     ko.bindingHandlers.jqValidation = {

        update: function (element, valueAccessor, allBindingsAccessor, viewModel) {
            var accessor = valueAccessor();
            //need unwrapobservable??
            if (accessor.enforce) {
                $(element).find(':submit').removeClass('cancel');
                $(element).validate({
                    submitHandler: function () {
                        if ($.isFunction(accessor.submitHandler))
                            accessor.submitHandler();
                    }
                });
            } else
                $(element).find(':submit').addClass('cancel');
        }
    };
12
задан drogon 7 March 2012 в 18:26
поделиться