在AngularJS中进行第二次获取请求
Make a second get request in 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
});
});
}]);
如果您想在$scope.person
更改时执行此操作(发生在person
请求的响应中),可以在控制器中设置$watch
。
$scope.$watch('person', function(newPerson, oldPerson){
// Ignore Angular's initial broadcast
if(!newPerson){
return false;
}
CbgenRestangular.one(newPerson.cars_url).get().then(function(data){
// Deal with cars data
});
});
相关文章:
- Javascript Select OnChange没有'不要第二次工作
- 相同的RegExp返回不同的结果-第一次是正确的结果,第二次是null
- 单击仅在第二次单击后有效
- 推特引导:弹出窗口不会在第一次点击时出现,但会在第二次点击时显示
- 第二次点击具有不同功能的按钮并更改文本
- 更改第二次推送时不起作用的元素高度
- 在第二次选择中选择2更改属性
- on(“点击”)仅在第二次点击后触发
- 在HTML中,如果第二次加载相同的脚本文件,它还会被加载吗
- Sails.js/Waterline.add()和.remove()仅适用于第二次调用
- 尝试在两次迭代中警告同一选择器的值,在第一次迭代中得到正确的值,而在第二次迭代中获得不正确的值.为什么?
- java脚本中的谷歌地图在第二次点击时不起作用
- 更改类名后,将第二次单击事件附加到元素
- 提交按钮只能在onchange调用输入文本后第二次点击时工作
- 将音频第二次转换为分钟和秒格式
- Jquery移动转换复选框在Jquery onclick函数()中第二次选中不起作用
- 在AngularJS中进行第二次获取请求
- Ajax onClick 事件第一次获取错误的结果,但第二次获取正确的结果
- 因为每次没有第二次获取数组数据
- Jqgrid 在第二次获取调用后在查询字符串中提交错误的参数