我尝试将当前上下文保存到本地/全局变量,并在事件" 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() {
}
};
})();
答案 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插件。