如何在Javascript中将当前上下文保存到本地变量

时间:2014-05-28 05:51:06

标签: javascript

我尝试将当前上下文保存到本地/全局变量,并在事件" showModal"中使用它。当我处理事件时,我得到$ this作为window对象。我需要采取上下文和调用功能。有人能帮助我吗?

代码:

var Modal = (function() {

    $this = this;
    var el = '.modal';

    return {
        init: function() {
            $(window).on('showModal', function(e, data) {
                $this.getData(data.controller, data.action, data.id);
            });
        },
        getData: function(controller, action, id) {
            var html = $.ajax({
                url: '/' + controller + '/' + action + '/' + id ? id : '',
                async: false
            }).responseText;
            this.render(html);
        },
        render: function(html) {
            $(el).html(html);
            $(el).modal();

            this.event();
        },
        event: function() {

        }
    };
})();

1 个答案:

答案 0 :(得分:1)

我不会使用this,只需删除范围内的函数,然后将它们导出到最后:

var Modal = (function() {

  var el = '.modal';

  function init() {
    $(window).on('showModal', function(e, data) {
      getData(data.controller, data.action, data.id);
    });        
  }

  function getData(controller, action, id) {
    var html = $.ajax({
      url: '/' + controller + '/' + action + '/' + id ? id : '',
      async: false
    }).responseText;
    render(html);
  }

  function render(html) {
    $(el).html(html);
    $(el).modal();
    event();
  }

  function event() {

  }

  return {init:init, getData:getData, render:render, event:event}
})();

或者更好的是,制作一个jQuery插件。