AngularJS:在RouteProvider中解析 - 检测成功/失败?

Mar*_*tin 13 angularjs angularjs-routing

我已经决定在我的routeprovider上工作,但我只是回复了承诺,所以我不知道它的成功与否.这就是我所拥有的

.when('/items', {
    templateUrl: 'views/items.html',
    controller: 'ItemsCtrl',
    resolve: {
        resolvedData: function(Restangular) {
            return Restangular.one('Items').get();
        }
    }
})
Run Code Online (Sandbox Code Playgroud)

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

.when('/items', {
    templateUrl: 'views/items.html',
    controller: 'ItemsCtrl',
    resolve: {
        resolvedData: function(Restangular) {
            Restangular.one('Items').get().then(function(data) {
                // success
            }, function() {
                // failure
            });
        }
    }
})
Run Code Online (Sandbox Code Playgroud)

我确实在这里看到了一个例子但是我很困惑,如果这是我需要的以及如何使用它?

AngularJS - 使用$ routeProvider:resolve拒绝$ http承诺

它似乎正在回归手工承诺.

resolve: {
    response: ['Warranty'
        '$q',
        function(Warranty, $q) {
            var dfd = $q.defer();
            Warranty.sendRequest().then(function(result) {
                dfd.resolve({
                    success: true,
                    result: result
                });
            }, function(error) {
                dfd.resolve({
                    success: false,
                    reason: error
                });
            });
            return dfd.promise;
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

我真的很感激任何人的帮助.

我真正想做的是在我的控制器中将已解析的变量注入控制器,如果失败则我还想访问控制器中的故障,这样我就可以向用户显示它是不可能的因问题而渲染.

Ye *_*Liu 10

您只需返回方法的返回值then:

resolve: {
    resolvedData: function(Restangular){
        return Restangular.one('Items').get().then(function (data) {
            ...
            return successData; // resolvedData will be resolved with the successData
            }, function () {
            ...
            return failureData; // resolvedData will be resolved with the failureData
            });
    }
}
Run Code Online (Sandbox Code Playgroud)

then方法的文档:

此方法返回一个新的promise,它通过successCallback或errorCallback的返回值解析或拒绝.

  • 返回一个对象,例如{success:true,data:...} (2认同)