我有一个自我调用匿名函数,我在GitHub上创建链接在Laravel中使用Restful,并添加了一些Sweet Alerts糖。
(function(window, $, undefined) {
var Laravel = {
initialize: function() {
this.methodLinks = $('a[data-method]');
this.token = $('a[data-token]');
this.registerEvents();
},
registerEvents: function() {
this.methodLinks.on('click', this.handleMethod);
},
handleMethod: function(e) {
e.preventDefault()
var link = $(this)
var httpMethod = link.data('method').toUpperCase()
var form
// If the data-method attribute is not PUT or DELETE,
// or PATCH then we don't know what to do. Just ignore.
if ($.inArray(httpMethod, ['PUT', 'DELETE', 'PATCH']) === -1) {
return false
}
Laravel
.verifyConfirm(link)
.done(function () {
form = Laravel.createForm(link)
form.submit()
})
},
verifyConfirm: function(link) {
var confirm = new $.Deferred()
swal({
title: "Are you sure?",
text: link.data('confirm'),
type: "warning",
showCancelButton: true,
confirmButtonColor: "#DD6B55",
confirmButtonText: "Yes, delete it!",
closeOnConfirm: false
},
function(result) {
if (result) {
confirm.resolve(link);
} else {
confirm.reject(link);
}
}
);
return confirm.promise()
},
createForm: function(link) {
var form =
$('<form>', {
'method': 'POST',
'action': link.attr('href')
});
var token =
$('<input>', {
'type': 'hidden',
'name': '_token',
'value': link.data('token')
});
var hiddenInput =
$('<input>', {
'name': '_method',
'type': 'hidden',
'value': link.data('method')
});
return form.append(token, hiddenInput)
.appendTo('body');
}
};
Laravel.initialize();
})(window, jQuery);
当表是常规表时,它很有用,但我有几个dataTables
表,可以将一些操作链接加载到javascript中的列中。
当发生这种情况时,我无法访问此功能,因为我认为它超出了范围,或者它已经被加载。
我正在使用:
initComplete: function(settings, json) {
//???? Laravel.initialize();
}
DataTable中的回调,但是我仍然无法访问任何内容。
有没有办法从匿名函数中导出对象文字,以便我可以重新初始化它?
或者我怎么可能这样做?
答案 0 :(得分:2)
您可以将其用作property
的{{1}},即全局变量,而不是将其定义为局部变量。
window
您可以随心所欲地调用window.Laravel = {...
。