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

怎么样:

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 回答
0

我想我没有正确地问它。

我试图做的是将函数名称作为字符串传递给 javascript 类属性,并期望它被调用。

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

然后最后调用它正在尝试如下所示

Class.Validate();

当然,它不像在 Class.Validate 中那样工作,有字符串,并且没有将其视为函数而不是字符串的规范。

所以我成功地尝试了以下

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

有效。谢谢

于 2013-01-17T07:52:35.467 回答
0

Javascript 需要引用一个函数来执行它。传递函数本身或执行@paul 建议的操作是编写可预测/可靠运行的代码的最可靠方法。

您不应该将函数名称作为字符串传递,但要知道您可以:

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

将窗口更改为函数所在的命名空间

于 2013-01-17T09:20:24.473 回答