簡體   English   中英

沒有超時服務的Angular指令不起作用

[英]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服務可能需要花費一秒鍾以上的時間才能返回,是否有任何通用解決方案。

您應該使用Angular的Promise$ http服務,該服務允許返回Promise。

在解決承諾(例如$ http請求)后,可以用結果填充$scope.treeRoot

讓我知道是否有幫助。

就像在一個答案中建議的那樣,您必須使用$ 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM