javascript - 在 AngularJS 中发出第二个 get 请求

标签 javascript angularjs

以下代码有效,我得到了返回的 JSON。我感兴趣的是 cars_url。我怎样才能得到URL (最好的方法是什么)然后发出辅助获取请求?

JSON

{
    created: "2013-11-08T18:57:44",
    domain: "www.test.com",
    cars_url: "/api/v1/carlot/4",
    image: null,
    modified: "2013-11-08T18:57:44"
}

JavaScript

app.factory('CbgenRestangular', function(Restangular) {
    return Restangular.withConfig(function(RestangularConfigurer) {
        RestangularConfigurer.setBaseUrl('http://127.0.0.1:8000');
    });
});


app.controller("CampaignData" ,
               [
                   '$scope',
                   'Restangular',
                   'CbgenRestangular',
                   function($scope, Restangular, CbgenRestangular){
                       CbgenRestangular.one('api/v1/person', "james").get().then(
                           function(person) {
                               $scope.person = person;
                               console.log(person)
                           }
                       );
                   }
               ]);

最佳答案

app.controller("CampaignData" , ['$scope', 'Restangular', 'CbgenRestangular', '$http',
    function($scope, Restangular, CbgenRestangular, $http){

        CbgenRestangular.one('api/v1/person', "james").get().then(function(person) {
                $scope.person = person;
                console.log(person);
                var cars = $http({method: 'GET', url:person.cars_url);
                cars.then(function(data){
                     // do success things here
                }, function(data){
                     /do error things here
                });
            }
        );

}]);

如果嵌套深度超过一层,嵌套请求可能会变得困惑。在这种情况下,您应该使用 $q 来控制请求流。

app.controller("CampaignData" , ['$scope', 'Restangular', 'CbgenRestangular', '$http', '$q',
    function($scope, Restangular, CbgenRestangular, $http, $q){
    $scope.person = {cars_url:"your 404 url here"};

    var personcall = CbgenRestangular.one('api/v1/person', "james").get();
    $q.when(personcall.then(
        function(person) {
            $scope.person = person;
            console.log(person);
        }
    ))
    .then(function(){
        var cars = $http({method: 'GET', url:$scope.person.cars_url);
        cars.then(function(data){
             // do success things here
        }, function(data){
             /do error things here
        });
    });
}]);

关于javascript - 在 AngularJS 中发出第二个 get 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20154973/

相关文章:

javascript - 来自 html title 属性的 jquery 工具提示

javascript - 在 Typescript 编译期间在相对导入语句上附加 .js 扩展名(ES6 模块)

angularjs - Angular中 Controller 之间的通讯

javascript - 来自 url 的 Angularjs json 不起作用,但在本地工作

javascript - 在 Rails 应用程序的移动尺寸屏幕中将图像导航元素对齐为 2 行

javascript - 重新打开页面时,Angular 脚本未运行

javascript - 如果 .ts 文件在文件夹中更深, typescript 无法找到要 bcrypt 的模块

javascript - 向已使用 innerHTML 的 div 添加按钮

javascript - ng-repeat 内的 $http 调用

javascript - 如何使用 lodash 对数字字符串字段进行排序