对话框回调

今天遇见一个需求 在提交数据时需要同时弹出3个确认菜单,点击了确认之后才能出现下一个弹出框,并且弹出之后确认框的逻辑在每一个点击确认后的回调函数中。就会有3个嵌套关系。既然是同一个逻辑的重复,自然想到了递归来实现。



弹出框的确认:
  	mui.confirm(content.shift(), "", forupar, function(res) {

					if(res.index == 0){
//点击确认的回调函数,此时是弹出第二个弹出框。
}


下面进行优化:
可以使用递归来做:
 var forupar = ["确定", "取消"];
		
		    var content=[
		    				"描述是否清晰并且单件描述中的报单地址已描述清楚?",
		    				"照片是否正确?",
		    				"单件地点是否准确?("+$("#searchinput").val()+")"
		    			];
			function dialog(){
				mui.confirm(content.shift(), "", forupar, function(res) {
					if(res.index == 0){
						if(content.length==0){
							//执行真正的数据提交操作
							add_report();
						}
						dialog();
return;
					}
				});

			}

			dialog();


即不断递归自身 来达到需求。
技巧性比较强。相比于直接把回调逻级一层一层写在里面很好。因为假如有10个弹出框的话那就萨比了。
另外还可以借助promise来完成。

猜你喜欢

转载自317948915.iteye.com/blog/2352384