Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当服务失败时,如何解析状态_Javascript_Angularjs_Promise - Fatal编程技术网

Javascript 当服务失败时,如何解析状态

Javascript 当服务失败时,如何解析状态,javascript,angularjs,promise,Javascript,Angularjs,Promise,谢谢你阅读这个问题。 我正在制作AngularJS应用程序。 我创建了一个状态并定义了调用User.getProfile的解析,它是在用户服务中定义的。 所以,当服务成功获取配置文件时,此解决方案起作用,但当服务失败时,此解决方案不起作用。 让我发个密码 .state('app.profile', { url: '/profile', views: { 'menuContent': { templat

谢谢你阅读这个问题。 我正在制作AngularJS应用程序。 我创建了一个状态并定义了调用User.getProfile的解析,它是在用户服务中定义的。 所以,当服务成功获取配置文件时,此解决方案起作用,但当服务失败时,此解决方案不起作用。 让我发个密码

    .state('app.profile', {
        url: '/profile',
        views: {
            'menuContent': {
                templateUrl: 'views/pages/profile.html',
                controller: 'ProfileCtrl',
            }
        },
        resolve: {
            data: function(User) {
                return User.getProfile();
            }
        }
    })
这是我定义的服务

service.getProfile = function() {
        var deferred = $q.defer();

        HttpReq.sendRequest( RESTAPI.DEV_URL + RESTAPI.PROFILE,
            'GET',
            undefined,
            function(result) {
                /*

                */
                if (result.success) {
                    deferred.resolve(result);
                }
                else {
                    deferred.reject(result);

                }

            },
            function(error, response) {
                deferred.reject(error);

                //uiHelper.alert($scope, 'Login Error', response.message);
        });

        return deferred.promise;
    };
在服务中调用defer.resolve时解析app.profile。 但在调用defer.reject时未解决。 如果我打电话有问题,请纠正我


谢谢

如果解析功能失败,您可能希望向用户显示相应的内容(如错误消息)。最好让resolve函数返回一个承诺(没有承诺),并使用内部事件$routeChangeError

 myApp.run(['$rootScope',function($rootScope) {
  $rootScope.$on('$routeChangeError', function() {
    // what you want to do if an error occurs 
    // ex: $rootScope.displayErrorMessage = true
  });
}]);

如果resolve函数失败,您可能希望向用户显示相应的内容(如错误消息)。最好让resolve函数返回一个承诺(没有承诺),并使用内部事件$routeChangeError

 myApp.run(['$rootScope',function($rootScope) {
  $rootScope.$on('$routeChangeError', function() {
    // what you want to do if an error occurs 
    // ex: $rootScope.displayErrorMessage = true
  });
}]);

我没有得到它,实际上您可以通过添加
then
语法
User.getProfile().then(successCallback,errorCallback)来检索状态因为实际上您正在返回一个承诺,我不知道您将如何使用它。这不是我想要的。这不是真正的clar您想要的。解析后,解析将向概要文件控制器抛出数据对象。在定义状态时使用回调是毫无意义的。我想要的是为服务中的每个案例将数据对象抛出到概要文件控制器。对于defer.resolve和defer.reject.now,只有在调用defer.resolve后才会传递数据对象。我可以将其传递给defer.reject吗?我没有得到它,实际上您可以通过添加
then
syntax
User.getProfile().then(successCallback,errorCallback)来检索状态因为实际上您正在返回一个承诺,我不知道您将如何使用它。这不是我想要的。这不是真正的clar您想要的。解析后,解析将向概要文件控制器抛出数据对象。在定义状态时使用回调是毫无意义的。我想要的是为服务中的每个案例将数据对象抛出到概要文件控制器。对于defer.resolve和defer.reject.now,只有在调用defer.resolve后才会传递数据对象。我可以让它通过延迟。拒绝也被称为?很好的观点!但是,有没有一种方法可以改变这种状态,而不考虑决心?这一点很好!但是,有没有一种方法可以改变这种状态而不考虑决心?