做web程序,防止二次提交是个头疼的问题。当应用从web发展到app的时候,这个问题也比较严重,因为app中存在较大的网络延迟,并不是所有人都随时可以使用wifi或4g,我之前iphone 4s就不支持移动4g,花几千块买了块砖头。
既然网络问题不能避免,那么就要考虑防止用户重复提交带来了的,你可以在后端java程序中进行排重处理,但那个事后解决。有没有办法实现就能预防了。接下来的指令或许或帮助到你。
引用的提示,参考IonicNoticeService
/**
* Created by dzm on 2016/2/17.
* 按钮指令
* 参数:
* initText:按钮的初始文字
* changeText: 按钮执行时的提示语
* btnClick:按钮执行的事件
* timeout:提示语显示的时间
* 参考示例:
* <dr-button class="button button-block button-assertive" ng-disabled="registerForm.$invalid" btn-click="doRegister()" init-text="注册并登录" change-text="注册中..."></dr-button>
*/
directives.directive('drButton', ['IonicNoticeService',function (IonicNoticeService) {
return {
restrict:'AE',
scope:{initText:'@',changeText:'@',btnClick:'&',timeout:'@'},
replace:true,
template:'<button ng-click="click()">{{initText}}</button>',
link:function(scope,element, attrs){
var btn = element.find('button');
for (key in attrs.$attr){
btn.attr(key,attrs.$attr[key]);
}
scope.click = function(){
scope.changeText = scope.changeText || scope.initText;
IonicNoticeService.show(scope.changeText,scope.timeout,function(){
scope.btnClick();
});
}
}
}
}]);