javascript - 如何访问函数中创建的对象

标签 javascript jquery backbone.js

我正在尝试解决以下问题。

我调用一个 View :

var loader = new LoadingView();

附加到该 View 的函数会创建一个新对象“spinner”

loader.showLoader()

我现在希望接下来可以调用一个隐藏该对象微调器的函数

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;
});

最佳答案

这是因为你在本地范围内定义了spinner,它只是showLoader本地范围内的一个变量,并没有附加到this context 作为您尝试在 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);     
    },

关于javascript - 如何访问函数中创建的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19935027/

相关文章:

javascript - 没有 'new' 无法调用类构造函数

javascript - 文件缓存 : Query string vs Last-Modified?

javascript - Twitter-Bootstrap 表单验证样式

javascript - 如何在离开时将 slider 重置为幻灯片 1?

javascript - Requirejs垫片: want to register backbone plugins directly into core backbone

javascript - 以编程方式导致 onBlur 在 react 中触发

Javascript 选择 onchange 提交表单

php - 全日历事件在 9 点之前不显示

javascript - Marionette LayoutView 不渲染

javascript - BackboneJS 中的集合用法