Как получить доступ к созданному объекту в функции

0

Я пытаюсь понять, как это происходит.

Я называю вид:

var loader = new LoadingView();

функция, прикрепленная к этому представлению, создает новый объект 'spinner'

loader.showLoader()

То, что я сейчас надеюсь, что я могу затем вызвать функцию, которая скрывает этот объект spinner

loader.hideLoader();

Однако hideLoader не имеет доступа к объекту "spinner".

Зачем?

просмотреть код:

define([
  'jquery',
  'underscore',
  'backbone',
  'spinner',
], function($, _, Backbone, Spinner){

  var LoadingView = Backbone.View.extend({
       el: '#loader',
       // View constructor
        initialize: function() {
             this.opts = {
              zIndex: 2e9, // The z-index (defaults to 2000000000)
              top: '20', // Top position relative to parent in px
              left: 'auto' // Left position relative to parent in px
            };
            _.bindAll(this, 'showLoader', 'hideLoader');
        },


      showLoader: function () {
        var spinner = new Spinner(this.opts).spin(this.el);
    },

     hideLoader: function () {
         var self = this;
         console.log(self)
      this.spinner.stop();
    }

    }); // end loaderview

return LoadingView;
});
Теги:
backbone.js

2 ответа

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

Это связано с тем, что вы определили spinner в локальной области, это просто переменная в локальной области showLoader и не привязана к this контексту как свойство, к которому вы пытаетесь получить доступ в hideLoader Поэтому попробуйте изменить его на

 showLoader: function () {
        this.spinner = new Spinner(this.opts).spin(this.el); //assuming spin returns the spinner object itself if not. do the below
        //this.spinner = new Spinner(this.opts);
        //this.spinner.spin(this.el);     
    },
  • 0
    Я вижу, что это имеет большой смысл, спасибо
  • 0
    @ Спайк, пожалуйста.
1

Вам нужно установить объект spinner как свойство this:

showLoader: function () {
    this.spinner = new Spinner(this.opts);
    this.spinner.spin(this.el); // not sure if you can chain these calls
},

Ещё вопросы

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