Использование фабрики $ .widget для переопределения параметров автозаполнения пользовательского интерфейса jQuery - PullRequest
2 голосов
/ 05 апреля 2011

Я решил написать собственный виджет, который расширяет и переопределяет стандартный виджет автозаполнения.

Официальная документация для фабрики $ .widget упоминает наследование, но не похоже на возможность переопределить исходные параметры виджета (т.е. не просто добавить к ним).

Например, мне не удалось переопределить параметр source (по умолчанию null) с помощью этого кода:

$.widget("ui.productSearch", $.ui.autocomplete, {
    bla: 15,
    source: function( request, response ) {
       response($.ui.autocomplete
                .filter(["a", "b", "c"],request.term));
    },
    minLength: 2        
});

Я опробовал приведенный выше код на JS Bin . Если вы просмотрите получившийся виджет, вы увидите, что bla добавлено к опциям, но оба source и minLength по-прежнему отражают значения по умолчанию, определенные в $ .ui .autocomplete. source по-прежнему равен нулю, поэтому возникает ошибка: this.source не является функцией .

Что я делаю не так? И если это ожидаемое поведение $ .widget, каков наилучший способ переопределить опцию?

1 Ответ

6 голосов
/ 05 апреля 2011

Что ж, похоже, вы просто определяете функцию 'source' в новом виджете; это нормально, но вы не изменили опцию. Что делать, если вы пытались

$.widget("ui.productSearch", $.ui.autocomplete, {
    options: {
        bla: 15,
        source: function( request, response ) {
           response($.ui.autocomplete
                .filter(["a", "b", "c"],request.term));
        },
        minLength: 2
    }
});

...