0

「ステップ」オブジェクトの配列を受け入れ、ステップ ナビゲーションを実行する JavaScript クラス コードをいくつか書いています。

私が計画しているのは、Next() メソッドが呼び出されるたびに、次のステップに進む前にコールバック関数を呼び出す必要があるということです。

疑似コード

var mySteps = {[1,"Step1","javascriptCallbackStep1"],[2,"Step2","javascriptCallbackStep2"]};
var StepsManager.Next = function() {
  var step = getcurrentStep();
  if(step.javascriptCallbackStep1())
      //go next
}

この javascriptCallbackStep1 は呼び出されていません。この小さな詳細に関するヘルプは大歓迎です。

ありがとう、

[更新:回答] きちんと聞いていなかったと思います。

私がやろうとしていたのは、関数名を文字列として javascript クラス プロパティ に渡し、それが呼び出されることを期待していたことです。

passedValue = "MyFunctionName";
Class.Validate = passedValue;

そして最後に、それを呼び出すために、以下のようなものを試していました

Class.Validate();

もちろん、Class.Validate には文字列があり、それを文字列ではなく関数として扱う仕様がなかったため、機能していませんでした。

だから私は成功しました

Class.Validate = function () { return window[passedValue](); };

出来た。とにかく、ありがとう。

4

4 に答える 4

0

Javascriptには、それを実行するための関数への参照を与える必要があります。関数自体を渡すか、@ paulが提案することを実行することが、予測可能/信頼性の高い動作をするコードを作成する最も確実な方法です。

関数名を文字列として渡すことはできませんが、次のことができることを知っておいてください。

function someFunction(name) { return "hello " + name; }
var fn = window["someFunction"]; 
console.log(fn("test"))

ウィンドウを関数が存在する名前空間に変更します

于 2013-01-17T09:20:24.473 に答える
0

ちゃんと聞いていなかったと思います。

私がやろうとしていたのは、関数名を文字列として javascript クラス プロパティ に渡し、それが呼び出されることを期待していたことです。

passedValue = "MyFunctionName";
Class.Validate = passedValue;

そして最後に、それを呼び出すために、以下のようなものを試していました

Class.Validate();

もちろん、Class.Validate には文字列があり、それを文字列ではなく関数として扱う仕様がなかったため、機能していませんでした。

だから私は成功しました

Class.Validate = function () { return window[jsValidationCallBack](); };

出来た。感謝

于 2013-01-17T07:52:35.467 に答える
0

どうですか:

var mySteps = {
    [1,"Step1", javascriptCallbackStep1 ],
    [2,"Step2", javascriptCallbackStep2 ]
};

var StepsManager.Next = function() {
    var step = getcurrentStep();

    if(step[2]())
    //go next
于 2013-01-16T10:08:32.870 に答える
0

あなたstepは配列であり、メソッドがありませんjavascriptCallbackStep1。これを試して:

var mySteps = {
    {id:1,name:"Step1",callback:javascriptCallbackStep1},
    {id:2,name:"Step2",callback:javascriptCallbackStep2}
};
var StepsManager.Next = function() {
  var step = getcurrentStep();
  if(step.callback && step.callback())
      //go next
}
于 2013-01-16T10:09:07.860 に答える