首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在angular中包含Facebook JS库?

如何在angular中包含Facebook JS库?
EN

Stack Overflow用户
提问于 2013-03-07 13:29:04
回答 1查看 2.4K关注 0票数 4

我想把Facebook的javascript库包含在一个Angular项目中,这样所有的facebook API调用(login,logout,等等)都封装在一个服务中。但是由于FB库的异步特性,我的代码似乎过于冗长,并且我调用了几次$rootScope.apply(),我不确定这是不是最佳实践。

现在我有这样的东西:

代码语言:javascript
运行
复制
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;
})

在这里寻找一个好的设计模式,与angular框架很好地契合。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-12 11:14:30

我认为你也许能够解决这个问题,使用Misko Hevery's approach here来延迟你的控制器的加载,直到Facebook XHR调用‘解决’。

这似乎已经解决了我所有的异步数据加载问题,可能意味着您也可以删除您的$apply()调用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15263791

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档