在angularJS中,我编写了一个显示数据的指令。此数据由远程数据库中的http服务提取。
如果我在代码中应用 timeout 服务,那么当http服务在一秒内返回时,结果会显示在html页面上。
$timeout(function () {
$scope.treeRoot = $scope.$eval('serviceResult') || {};
}, 1000);
如果我不使用超时服务,那么页面不会显示任何数据,因为$ scope.treeRoot为空,例如
$scope.treeRoot = $scope.$eval('serviceResult') || {};
在生产中,http服务需要花费超过一秒的时间才能返回,是否存在任何通用解决方案。
答案 0 :(得分:2)
答案 1 :(得分:0)
AS在一个答案中建议您必须使用$ http promises并在响应中捕获结果。
以下是一些代码示例。
服务:
app.factory('myService', ['$http',
function($http){
var obj = {};
obj.get = function (q) {
return $http.get('/your_get_url')
};
obj.post = function (q, object) {
return $http.post('/your_post_url', object)
};
return obj;
}
]);
在你的控制器中,
allControllers.controller('changePasswordController', ['$scope','myService',
function($scope,myService) {
myService.get().then(function (result) {
$scope.treeRoot = 'use your result here'
},function error(result)
{
console.log(result)
})
}
])
这将取代您的超时问题。