AngularJS在保存时显示中间页面
当使用我的AngularJS应用程序保存新发票时,API检查产品余额、保存数据等时需要花费大量时间,因此我想知道AngularJS中是否有一种方法可以像中间人一样显示(页面…示例:#/processing)用户单击AngularJS在保存时显示中间页面,angularjs,Angularjs,当使用我的AngularJS应用程序保存新发票时,API检查产品余额、保存数据等时需要花费大量时间,因此我想知道AngularJS中是否有一种方法可以像中间人一样显示(页面…示例:#/processing)用户单击保存按钮后,将用户路由到的位置,然后根据保存新发票$http结果(失败或成功),将用户路由回发票页面(例如#/new invoice)或成功保存页面(感谢订购) 任何例子都值得高度赞赏。谢谢我正在使用spinner做这些事情。。。http请求时启动微调器,响应时停止微调器。使用http
保存
按钮后,将用户路由到的位置,然后根据保存新发票$http结果(失败或成功),将用户路由回发票页面(例如#/new invoice)或成功保存页面(感谢订购)
任何例子都值得高度赞赏。谢谢我正在使用spinner做这些事情。。。http请求时启动微调器,响应时停止微调器。使用http拦截器进行相同的操作。如果你不想自己实现它,下面有几个链接 或
另外,请阅读这篇文章,其中详细介绍了微调器的工作原理。我正在使用微调器进行此类操作。。。http请求时启动微调器,响应时停止微调器。使用http拦截器进行相同的操作。如果你不想自己实现它,下面有几个链接 或
另外,请阅读本手册,其中详细介绍了微调器的工作原理。您可以使用
ng if
在输入和保存状态之间切换
模板示例:
<div ng-if="isSaving"><img src="spinner.gif"> Saving...</div>
<form ng-if="!isSaving" ng-submit="saveTheThing(thing)>
<input ng-model="thing.title" type="text"/>
...
</form>
如果您需要IE8支持,您需要将
.catch
替换为['catch']
和.finally
替换为['finally']
您可以使用ng If
在输入和保存状态之间切换
模板示例:
<div ng-if="isSaving"><img src="spinner.gif"> Saving...</div>
<form ng-if="!isSaving" ng-submit="saveTheThing(thing)>
<input ng-model="thing.title" type="text"/>
...
</form>
如果您需要IE8支持,您需要将
.catch
替换为['catch']
和.finally
替换为['finally']
,尽管我不会为处理页面使用独立的url/路由。
您可以将保存承诺存储在服务中
angular.module('app').value('progress', {});
angular.module('app').controller('FormCtrl', function ($scope, progress, $location) {
$scope.saveTheThing = function(thing) {
progress.thing = $http.post('api/things', thing);
$location.path('/processing');
});
});
angular.module('app').controller('ProgressingCtrl', function (progress, $location) {
progress.thing.then(function () {
$location.path('/thank-you');
}, function (error) {
$location.path('/form');
});
});
与ng if
解决方案相比,您现在需要更多的工作来:
- 失败时恢复表单值
- 将错误消息传递给FormCtrl
- 定义正在进行的页面的刷新行为
angular.module('app').value('progress', {});
angular.module('app').controller('FormCtrl', function ($scope, progress, $location) {
$scope.saveTheThing = function(thing) {
progress.thing = $http.post('api/things', thing);
$location.path('/processing');
});
});
angular.module('app').controller('ProgressingCtrl', function (progress, $location) {
progress.thing.then(function () {
$location.path('/thank-you');
}, function (error) {
$location.path('/form');
});
});
与ng if
解决方案相比,您现在需要更多的工作来:
- 失败时恢复表单值
- 将错误消息传递给FormCtrl
- 定义正在进行的页面的刷新行为