4
我想在一個Angular項目中包含Facebook JavaScript庫,這樣所有的Facebook API調用(登錄,註銷等)都被封裝在一個服務中。但由於FB庫的異步特性,我的代碼看起來過於冗長,而且我有幾次調用$ rootScope.apply(),我不確定這是最佳實踐。如何在角度中包含Facebook JS庫?
現在,我有這樣的事情:
app.factory('Facebook', function($rootScope, $window, $q){
var FBdefer = $q.defer();
var FBpromise = FBdefer.promise;
$window.fbAsyncInit = function(){
$rootScope.$apply(function(){
FB.init(/* FB init code here*/);
FBdefer.resolve(FB);
}
}
var fb_service_api = {
login: function(){
var deferred = $q.defer();
FBPromise.then(function(FB){
FB.login(function(response){
$rootScope.$apply(
deferred.resolve(response)
);
});
}
return deferred.promise.
}
}
return fb_service_api;
})
尋找有好的設計模式與框架的角度非常適合。
我的問題是,我的頁面的其餘部分不需要等待fb庫在頁面開始呈現之前加載。我在想頁面可以異步加載和渲染FB組件。 – sthomps 2013-03-13 15:16:20