说实话,我可以调用该函数,但只是以硬编码的方式。我不想对提交绑定我的 getData 函数进行硬编码,而是想通过参数调用该函数。请帮助我,如何做到这一点。
谢谢。
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
});
}
此函数应调用 xForm 中的 getData(这是 xForm 的片段)
var xForm = xForm || {};
xForm.Main = function()
{
var self = this;
this.target = "";
this.data = {};
...
this.getData = function()
{
getSingleElements();
getMultiElements();
return returnData();
}
更新:
我想我刚刚找到了一种方法来做到这一点,但请告诉我我是否做错了什么,或者你有一个更好的解决方案来解决这个问题(我很确定有人有)
我想,我有正确的方法。
在xForm中我做了一个fn,它通过参数调用函数包含在self中(实际上等于这个)
var xForm = xForm || {};
xForm.Main = function()
{
var self = this;
this.callFn = function(func)
{
return self[func].call(this);
}
...
然后我从另一个类(xModal)调用 fn
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()
所以现在模态类将调用 args[1] 的 args[2] 函数。还可以通过 apply 方法为调用 fn 提供更多参数。
对我很好,但我不知道,也许你可以帮助我做得更好。