ogregor
@ogregor
арендатор vpn сервера debian

Как вернуть значение из функции прототипа?

Здравствуйте не могу вернуть значение из функции прототипа в функцию конструктор. Не судите строго это первая попытка написания плагина. Вроде как callback надо применять, но если честно до сих пор не понял как функционирует этот механизм.

function GeoSelector(element, options) {

        var widget = this;
        widget.config = $.extend({}, defaults, options);
        widget.element = element;

        widget.init();

        widget.inputContainer.on('keyup', function (e) {
            var str = widget.inputContainer.val();
            
            
            //здесь надо указать условие по количеству символов ввода.
            // установить таймаут для запросов


// ВОТ ЗДЕСЬ НАДО ПОЛУЧИТЬ ЗНАЧЕНИЕ ИЗ ФУНКЦИИ
            var regions = widget.getRegion();
            console.log(regions);
          
        });
    }
    ;

    GeoSelector.prototype = {
        
       
        init: function () {

            //  console.log('privet');

            this.element.addClass('gs-container');

            console.log(this.element);

            var selectContainer = $('<div/>').addClass('gs-select-container').appendTo(this.element);
            this.inputContainer = $('<input/>').addClass('gs-input-container').appendTo(selectContainer);
            this.regionContainer = $('<div/>').addClass('gs-region-container').appendTo(selectContainer);
            this.cityContainer = $('<div>').addClass('gs-city-container').appendTo(this.element);
        },
        getRegion: function (callback) {

            $.ajax({
                type: 'GET',
                url: './js/region.json',
                contentType: 'application/json; charset=utf-8',
                dataType: 'json'

            }).done(function (data) {

// А ЗДЕСЬ ПЕРЕДАТЬ ЕГО
                callback(data);
            });
        },
        
        searchItem: function (mask, array) {
            var result = false;
            var x, y, result = [];
            mask = mask.toUpperCase();

            if (mask !== '') {
                for (x = 0, y = array.length; x < y; x++) {
                    var string = array[x][1].toUpperCase();
                    if (string.search(mask) !== -1) {
                        result.push(array[x]);
                    } else {
                        continue;
                    }
                }
            }
            result.length < 1 ? result = false : result;
            return result;
        }
    };
  • Вопрос задан
  • 108 просмотров
Решения вопроса 1
ogregor
@ogregor Автор вопроса
арендатор vpn сервера debian
Я делал проще  присвоил внешнюю область видимости this переменной:
и результат возвратился в основной объект

getRegion: function (callback) {
///////
var _this = this
//////
$.ajax({
type: 'GET',
url: './js/region.json',
contentType: 'application/json; charset=utf-8',
dataType: 'json'

}).done(function (data) {
_this.data = data
});
},
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы