[英]Angular directive without timeout service does not work
在angularJS中,我寫了一條指令來顯示數據。 此數據是通過http服務從遠程數據庫中獲取的。
如果我在代碼中應用以下超時服務,則結果將顯示在html頁面上,因為http服務將在一秒鍾內返回。
$timeout(function () {
$scope.treeRoot = $scope.$eval('serviceResult') || {};
}, 1000);
如果我不使用超時服務,則頁面不會顯示任何數據,因為$ scope.treeRoot為空,例如
$scope.treeRoot = $scope.$eval('serviceResult') || {};
在生產中,http服務可能需要花費一秒鍾以上的時間才能返回,是否有任何通用解決方案。
就像在一個答案中建議的那樣,您必須使用$ 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)
})
}
])
這取代了您的超時問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.