Angular ajax 仅在指令中使用 $timeout
Angular ajax working only with $timeout in directive
我有一个发出 ajax 请求的指令。
在我将它包装在 $timeout 中之前它是行不通的:
return {
restrict: 'E',
scope : {
param1: '=',
param2: '='
},
templateUrl: "teams/views/myDirective.html",
link: function($scope){
$timeout(function(){
$http.get(endPointUrl)
.success(function(result){
console.log(result)
})
.error(function(err){
console.log(err);
});
}, 0);
}
};
有人知道为什么吗?
提前感谢回答!
$http
只调用 returns 承诺。
以下代码可能对您有所帮助。
理想情况下,应该在服务中而不是指令的 link 函数中完成像操作一样获取数据。
app.service('myService', ['$http',
function($http) {
this.getData = function() {
return $http({
method: 'GET',
url: 'http://httpbin.org/get',
headers: {
'Content-Type': "application/json"
}
}).
success(function(data, status) {
return data;
}).
error(function(data, status) {
return "Request Failed";
});
}
}
]);
app.directive('appDirective', ['myService',
function(myService) {
return {
link: function($scope) {
myService.getData().then(function(data) {
$scope.name = 'User, Data fetched as: ' + JSON.stringify(data);
})
}
}
}
])
我有一个发出 ajax 请求的指令。 在我将它包装在 $timeout 中之前它是行不通的:
return {
restrict: 'E',
scope : {
param1: '=',
param2: '='
},
templateUrl: "teams/views/myDirective.html",
link: function($scope){
$timeout(function(){
$http.get(endPointUrl)
.success(function(result){
console.log(result)
})
.error(function(err){
console.log(err);
});
}, 0);
}
};
有人知道为什么吗? 提前感谢回答!
$http
只调用 returns 承诺。
以下代码可能对您有所帮助。
理想情况下,应该在服务中而不是指令的 link 函数中完成像操作一样获取数据。
app.service('myService', ['$http',
function($http) {
this.getData = function() {
return $http({
method: 'GET',
url: 'http://httpbin.org/get',
headers: {
'Content-Type': "application/json"
}
}).
success(function(data, status) {
return data;
}).
error(function(data, status) {
return "Request Failed";
});
}
}
]);
app.directive('appDirective', ['myService',
function(myService) {
return {
link: function($scope) {
myService.getData().then(function(data) {
$scope.name = 'User, Data fetched as: ' + JSON.stringify(data);
})
}
}
}
])