Чтобы сказать правду, я могу вызвать функцию, но просто жестко. Вместо жесткого кодирования submit, связывающий мою функцию getData, я хотел бы вызвать функцию аргументами. Пожалуйста, помогите мне, как это сделать.Как вызвать функцию-экземпляр класса в javascript?
Спасибо.
formhandler = new xForm.Main(); // new formhandler
formhandler.setForm(this.formid); // fn.setForm(string) // configure the container, which has the form elements, or the form itself
modal = new xModal.Main(); // new modal handler
modal.setModal(this.modalid); // set modal element
modal.showModal(); // show
modal.bindClose(".cancel"); // bind closing classes
modal.bindSubmit(".submit", formhandler, "getData"); // bind submit to call formhandler.getData()
в xModal.js
var xModal = xModal || {};
xModal.Main = function()
{
var self = this;
...
this.bindSubmit = function(classname, a, b)
{
this.closeclass = classname;
$("#"+this.target).find(classname).click(function(){
a.call(b); // edited after the original post, i forgot to replace the call's argument to b in the question excuse me for the inaccuracy
});
}
эта функция должна вызывать GetData в XFORM (вот фрагмент из XFORM)
var xForm = xForm || {};
xForm.Main = function()
{
var self = this;
this.target = "";
this.data = {};
...
this.getData = function()
{
getSingleElements();
getMultiElements();
return returnData();
}
Обновление:
Я думаю, что я только что нашел способ сделать это, но, пожалуйста, скажите мне, если я сделал что-то не так, или у вас есть лучшее решение для этой проблемы (я уверен, что у кого-то есть)
Я думаю, у меня есть правильный метод.
в XFORM я сделал сноска, которая вызывает функции по параметрам содержит в себе (что равно это, на самом деле)
var xForm = xForm || {};
xForm.Main = function()
{
var self = this;
this.callFn = function(func)
{
return self[func].call(this);
}
...
тогда я называю ФН из другого класса (xModal)
var xModal = xModal || {};
xModal.Main = function()
{
var self = this;
this.bindSubmit = function(classname, a, b)
{
this.closeclass = classname;
$("#"+this.target).find(classname).click(function(){
a.callFn(b);
});
}
тогда я просто должен сказать xModal это:
modal.bindSubmit(".submit", formhandler, "getData"); // bind submit to call formhandler.getData()
так что теперь модальное гр lass вызовет функцию args [1] args [2]. также может дать больше параметров вызову fn методом apply.
работает отлично, но я не знаю, может быть, вы можете помочь мне сделать это лучше.
Я этого не понимаю, извините. :(Пожалуйста, объясните это. –
@ Répás: Я обновил свой ответ, чтобы объяснить, что делает код. Протестируйте его и примите мой ответ, если он сработает для вас. – geon