2014-12-05 16 views
0

例如ServiceNameQuery工作,有以下一段代碼:如何在AngularJS

$scope.posts = Post.query({ user_id: $stateParams.user_id }) 

如何做到這一點的建設工作?當JS執行此行帖子可能是空的,但一段時間後,服務器端將返回一些帖子,我的看法會渲染很多帖子。但'查詢'函數將來如何返回值呢?我不明白它,因爲AJAX調用是異步的,我不會在任何函數中發送任何值。請描述這一刻。謝謝。

我知道承諾和$ q,但我不明白它是如何工作在這裏。

回答

0

它在內部執行異步操作並返回對空數組的引用。

當異步操作完成後,它將使用元素填充該數組。

$scope.posts是對同一個數組的引用,包含這些元素。

簡單示例實現:

app.factory('Post', function ($timeout) { 

    var query = function (selector) { 

    var result = []; 

    // An asynchronous operation 
    $timeout(function() { 
     for (var i = 0; i < 5; i++) { 
     result.push({ id: i }); 
     } 
    }, 3000); 

    return result; 
    }; 

    return { 
    query: query 
    }; 
}); 

演示http://plnkr.co/edit/t6yRNFnHcrQ1X2HCmXjb?p=preview

+0

我明白了。謝謝!!! – malcoauri 2014-12-05 22:24:03

+0

不客氣:) – tasseKATT 2014-12-06 08:03:22