Javascript 调用$http以响应另一个http-js
我是新来的。我试图在$http的响应中实现$http 我的问题是,当我调用$http以响应另一个$http时。它不会在视图中显示数据。视图在第二次$http调用之前呈现。我用过承诺,但没有运气。这是我通过稍加修改使用的另一个答案的代码Javascript 调用$http以响应另一个http-js,javascript,angularjs,Javascript,Angularjs,我是新来的。我试图在$http的响应中实现$http 我的问题是,当我调用$http以响应另一个$http时。它不会在视图中显示数据。视图在第二次$http调用之前呈现。我用过承诺,但没有运气。这是我通过稍加修改使用的另一个答案的代码 angular.module('App', []) .controller('Ctrl', function($scope, resultsFactory) { resultsFactory.all().then( function(res){
angular.module('App', [])
.controller('Ctrl', function($scope, resultsFactory) {
resultsFactory.all().then(
function(res){
$scope.results = res;
},
function(err){
console.error(err);
}
);
})
.factory('resultsFactory', function($http, $timeout, $q) {
var results = {};
function _all(){
var d = $q.defer();
$http({
url: url,
method: 'POST'
}).then(function (response) {
var f = {};
f.id = response.data.id;
f.name = response.data.name;
$http({
url: url,
data: "id="+response.data.parent_id,
method: 'POST'
}).then(function (response1) {
f.parentname = response1.name;
d.resolve(f);
});
});
return d.promise;
}
results.all = _all;
return results;
});
id和名称在视图中正确显示,但它没有显示父名称。我已经调试过了。在渲染视图时,它是未定义的。渲染后,将其值设置为parentname。有人能帮我解决这个问题吗 您重写了d变量
.factory('resultsFactory', function ($http, $timeout, $q) {
var results = {};
function _all() {
var d = $q.defer();
$http({
url : url,
method : 'POST'
}).then(function (response) {
var secondD = {};
secondD.id = response.data.id;
secondD.name = response.data.name;
$http({
url : url,
data : "id=" + response.data.parent_id,
method : 'POST'
}).then(function (response1) {
secondD.parentname = response1.name;
secondD.resolve(d);
});
});
return d.promise;
}
results.all = _all;
return results;
});
你重写了你的d变量
.factory('resultsFactory', function ($http, $timeout, $q) {
var results = {};
function _all() {
var d = $q.defer();
$http({
url : url,
method : 'POST'
}).then(function (response) {
var secondD = {};
secondD.id = response.data.id;
secondD.name = response.data.name;
$http({
url : url,
data : "id=" + response.data.parent_id,
method : 'POST'
}).then(function (response1) {
secondD.parentname = response1.name;
secondD.resolve(d);
});
});
return d.promise;
}
results.all = _all;
return results;
});
你不应该为此需要延期付款:只要把承诺连成链:
return $http({
url: url,
method: 'POST'
}).then(function (response) {
var data = {};
data.id = response.data.id;
data.name = response.data.name;
return $http({
url: url,
data: "id="+response.data.parent_id,
method: 'POST'
}).then(function (response1) {
data.parentname = response1.name;
return data;
});
});
你不应该为此需要延期付款:只要把承诺连成链:
return $http({
url: url,
method: 'POST'
}).then(function (response) {
var data = {};
data.id = response.data.id;
data.name = response.data.name;
return $http({
url: url,
data: "id="+response.data.parent_id,
method: 'POST'
}).then(function (response1) {
data.parentname = response1.name;
return data;
});
});
您正在使用相同的变量
d
!您正在使用相同的变量d
!谢谢丹尼尔,问题也在考虑之中。我刚查过。我没有正确渲染该值。它解决了我的问题谢谢丹尼尔,问题也在考虑之中。我刚查过。我没有正确渲染该值。它解决了我的问题