这是我尝试做的事情: 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"。提前感谢您的回答。
答案 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);
});