我有一个对象文字,代表一个应用程序的页面结构。如果满足某个条件,我想跳过一个页面并转到下一个页面。
请查看以下代码:
var someObj = {
"page-1": {
before: function(x){
switch(x){
case true:
break;
case false:
someObj['page-2'].init(); // HERE, I want to skip to the page-2 init() method, **and not go back!**
return false;
break;
}
},
init: function(){
this.before(false);
alert("This is page 1!"); // I don't want to see this!
},
},
"page-2": {
init: function(){
alert("this is page 2!"); // After this alert, I want to STOP, and not go back to the page-1 init() method!
return false;
},
},
}
someObj['page-1'].init();
我无法解决如何停止"这是第2页!"警报 - 我总是得到2个警报。 return false
没有工作?我怎么能这样做?
答案 0 :(得分:1)
您可以让所有功能都注意从他们调用的其他函数返回值,实现" abort"某种协议,或者你可以抛出异常。
"page-2": {
init: function(){
alert("this is page 2!");
throw new Error("Cease and desist");
},
},
两种方法之间的选择取决于您的需求。
答案 1 :(得分:1)
将before()
更改为始终返回布尔值,并使page-1 init()
方法的其余部分成为条件:
before: function(x){
if (!x) {
someObj['page-2'].init();
}
return x;
},
init: function(){
if (this.before(false)) {
alert("This is page 1!");
}
},
答案 2 :(得分:0)
我要做的是实际检查你的before()函数返回什么,并根据该值执行init()方法的其余部分,如下所示:
if(this.before(false)){
do stuff
}else{
do something else
}