本当のことを言うと、私は関数を呼び出すことができますが、ハードコーディングされた方法でのみです。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を作成しました(実際には、これと同じです)
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 にさらにパラメーターを与えることもできます。
私には問題なく機能しますが、わかりません。これを改善するのを手伝ってくれるかもしれません。