我有一个发出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);
}
};
有人知道为什么吗? 提前谢谢你的答案!
答案 0 :(得分:1)
$http
调用只返回承诺。
以下代码可以帮助您。
理想情况下,像操作一样获取数据应该在服务中而不是指令的链接函数中完成。
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);
})
}
}
}
])