поддержание объема внутри виджета jquery ui

0

У меня возникла проблема с потерями видимости внутри виджета. Внутри _initialize, this.options не работает, и ни делает that.options. Как я могу получить доступ к области видимости этого метода?

$.widget("myproj.map", {
        options: {
            centerLat: 51.511214,
            centerLong: -0.119824,
        },

        // the constructor
        _create: function () {
            var that = this;
            google.maps.event.addDomListener(window, 'load', this._initialize);
        },
        _initialize: function () {

            var mapOptions = {
                center: new google.maps.LatLng(that.options.centerLat, that.options.centerLong),
                zoom: 11,
            };

Чтобы уточнить

$.widget("myproj.map", {
        options: {
            centerLat: 51.511214,
            centerLong: -0.119824,
        },

        // the constructor
        _create: function () {
            google.maps.event.addDomListener(window, 'load', this._initialize);
        },
        _initialize: function () {
            console.log(this);
            var mapOptions = {
                center: new google.maps.LatLng(this.options.centerLat, this.options.centerLong),
                zoom: 11
            }; ...code omitted

не работает, когда я console.log это в _initialize я получаю

Window {top: Window, window: Window, location: Location, external: Object, chrome: Object…}
  • 0
    у вас запятые повсюду ... без конца }; , } И т.д. ...
  • 1
    Я думаю, что он просто пропустил закрытие _initialize и widget, пропущенных: } });
Теги:
jquery-ui-widget-factory

2 ответа

1
Лучший ответ

google.maps.event.addDomListener изменяет то, что this значит. вы можете изменить его назад, вызвав bind mehtod

google.maps.event.addDomListener(window, 'load', this._initialize.bind(this));
  • 0
    Ура, именно то, что мне было нужно :)
0

EDIT: этот ответ устраняет переупорядочивание, вызванное обработчиком событий

var that находится внутри функции _create, вы должны иметь доступ к this изнутри инициализации.

new google.maps.LatLng(this.options.centerLat, this.options.centerLong)

проверьте этот аналогичный вопрос о "этом"

  • 0
    Я только добавил переменную 'that', поскольку терял область видимости, переходя в функцию initialize из прослушивателя google.maps.event
  • 0
    Ах понятно. добавил новый ответ

Ещё вопросы

Сообщество Overcoder
Наверх
Меню