我正在编写一些javascript类代码,它将接受'Steps'对象的数组,并将执行步骤导航。
我打算做的是,每当调用Next()方法时,它应该在进入下一步之前调用回调函数。
pseduo代码
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();
Offcourse它不像Class.Validate那样工作有字符串,并且没有规范将其视为函数而不是字符串。
所以我成功尝试了
Class.Validate = function () { return window[passedValue](); };
有效。不管怎样,谢谢。
答案 0 :(得分:0)
怎么样:
var mySteps = {
[1,"Step1", javascriptCallbackStep1 ],
[2,"Step2", javascriptCallbackStep2 ]
};
var StepsManager.Next = function() {
var step = getcurrentStep();
if(step[2]())
//go next
答案 1 :(得分: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
}
答案 2 :(得分:0)
我想我没有正确地问它。
我试图做的是将函数名称作为字符串传递给javascript类属性,并期望它被调用。
passedValue = "MyFunctionName";
Class.Validate = passedValue;
然后最后称它正在尝试下面的事情
Class.Validate();
Offcourse它不像Class.Validate那样工作有字符串,并且没有规范将其视为函数而不是字符串。
所以我成功尝试了
Class.Validate = function () { return window[jsValidationCallBack](); };
有效。感谢
答案 3 :(得分:0)
Javascript需要被赋予对执行它的函数的引用。传递函数本身或执行@paul所建议的是编写可预测/可靠行为的代码的最可靠方法。
您不应该将函数名称作为字符串传递,但要知道您可以:
function someFunction(name) { return "hello " + name; }
var fn = window["someFunction"];
console.log(fn("test"))
将窗口更改为功能所在的命名空间