2016-01-08 74 views
0

每當使用活動訂閱的狀態加載時,我都會遇到與angular-meteor項目閃爍有關的問題。通過閃爍,我的意思是數據在那裏,然後它會消失,並在半秒後回來。頁面加載時的角度和流星閃爍

我已將此添加到狀態的resolve財產(使用UI路由器):

campaigns: ($q) => { 
    var deferred = $q.defer(); 
    Meteor.subscribe('campaigns', { 
    onReady: deferred.resolve, 
    onStop: deferred.reject 
    }); 
    return deferred.promise; 
} 

的閃爍停止了,但我真的不明白這個代碼。能理解角度的人能否解決這個問題?

只是不知道爲什麼它的工作。謝謝。

回答

1

$q is angular's implementation of promises

在一個非常微不足道的小竅門中,一個承諾有兩個回調,這些回調在數據返回時解析;如果呼叫成功,則爲解析函數;如果呼叫失敗,則爲拒絕。無論它獲得的數據將被傳遞到這些函數中(實質上是做deferred.resolve(data)或deferred.reject(error))。 $ q.defer()允許我們稍後分配分辨率/拒絕。

meteor's subscribe function takes a few arguments。集合的字符串名稱,返回要傳遞給集合的參數數組的函數以及對象/函數。最後一個參數的對象部分需要一個「onReady」和「onStop」函數,並且將執行這些函數並傳遞它獲取的任何數據。我們在這裏傳遞迴調。

終於,我們回報了諾言。 resolve.campaigns將是一個承諾,我們可以使用.then(successCallback,failureCallback)調用獲取值。流星在幕後處理這件事。

相關問題