$ http的动态网址获取

时间:2017-04-01 13:56:05

标签: javascript angularjs http get

这是我尝试做的事情: Json来自" urldatas":

[{ "name" : "John" }]

JS档案:

 var app = angular.module('app', []);
    app.service('service', function($http, $q){
        this.getDatas = function () {
            var datas = $http.get('urldatas', {cache: false});
            return $q.all({datas});
        };
    app.controller('FirstCtrl', function($scope, service, $http, $timeout) {
        var vm = this;
        vm.loadData = function () {
            var promise = service.getDatas();
            promise.then(function (data) {
                $scope.datas = data.datas.data;
                console.log($scope.datas);
            });
        };
    vm.loadPackages = function () {
            var url = "urlPackages" + datas.name;
            $http.get(url).then(function (response) {
            $scope.MyPackages = response.data;
        });
};

所以我尝试通过getDatas中的值动态更改getPackages中$ http.get中的url,但我不知道该怎么做。控制台中的网址显示" urlPackagesundefinded"。提前感谢您的回答。

1 个答案:

答案 0 :(得分:0)

$q将多个请求作为数组发送,而不是作为对象发送。删除花括号并添加方括号

var datas = $http.get('urldatas', {cache: false});
return $q.all([datas]);

因为您引用controllerAs删除范围变量并通过vm引用它们。

也在then承诺中,响应数据位于data属性

var promise = service.getDatas();
promise.then(function (response) {
   vm.datas = response.data.datas.data;
   console.log(vm.datas);
});