AngularJS:在RouteProvider中解决 – 检测成功/失败?

前端之家收集整理的这篇文章主要介绍了AngularJS:在RouteProvider中解决 – 检测成功/失败?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个决心在我的路由器工作,但我只是退回的承诺,所以我不知道它的成功或失败.这是我有的
  1. .when('/items',{
  2. templateUrl: 'views/items.html',controller: 'ItemsCtrl',resolve: {
  3. resolvedData: function(Restangular){
  4. return Restangular.one('Items').get();
  5. }
  6. }
  7. })

现在这样做有效,但是如何检测成功或失败…我可以在解决方法中输入,但是我会在成功和失败中返回什么…记住我需要在控制器中注入项目.

  1. .when('/items',{
  2. templateUrl: 'views/items.html',resolve: {
  3. resolvedData: function(Restangular){
  4. Restangular.one('Items').get().then(function (data) {
  5.  
  6. // success
  7.  
  8. },function () {
  9. // failure
  10. });
  11. }
  12. }
  13. })

我在这里看到一个例子,但如果这是我需要的和如何使用,我很困惑?

AngularJS – rejected $http promise with $routeProvider:resolve

似乎正在返回一个手册承诺.

  1. resolve : {
  2. response : [ 'Warranty' '$q',function(Warranty,$q) {
  3. var dfd = $q.defer();
  4.  
  5. Warranty.sendRequest().then(function(result) {
  6. dfd.resolve({ success: true,result : result });
  7. },function(error) {
  8. dfd.resolve({ success : false,reason : error });
  9. });
  10.  
  11. return dfd.promise;
  12.  
  13. } ]
  14. }

我真的很感谢任何人有任何帮助.

我真正想要做的是在控制器中将已解析的变量注入到控制器中,如果失败,那么我也想访问控制器中的故障,所以我可以向用户显示这是不可能的由于问题造成的.

你可以返回当时方法的返回值:
  1. resolve: {
  2. resolvedData: function(Restangular){
  3. return Restangular.one('Items').get().then(function (data) {
  4. ...
  5. return successData; // resolvedData will be resolved with the successData
  6. },function () {
  7. ...
  8. return failureData; // resolvedData will be resolved with the failureData
  9. });
  10. }
  11. }

那么方法doc

This method returns a new promise which is resolved or rejected via the return value of the successCallback or errorCallback.

猜你在找的Angularjs相关文章