角度配置块设置

时间:2016-04-21 07:52:10

标签: javascript angularjs

我在初始化Facebook和其他提供程序时遇到此问题,是否有可能以某种方式执行此代码而不是在应用程序启动时,但是当用户访问我想要使用它的页面时?我将从API调用获取APP_ID,我不想在主页上加载页面x上所需的数据。

.config(function(FacebookProvider) {
 // Set your appId through the setAppId method or
 // use the shortcut in the initialize method directly.
 FacebookProvider.init('YOUR_APP_ID');

})

2 个答案:

答案 0 :(得分:0)

我认为最好的方法是使用服务,因为它是单身,并且不会多次初始化。

<击>

<击>
  

像这样添加 facebook 服务 -

app.service('facebook', function(FacebookProvider) {
  this.init: function(){
     FacebookProvider.init('YOUR_APP_ID');
  }
});

<击>

  

然后你可以注入 facebook 并像这样调用 init 方法 -

app.controller('AuthCtrl', function($scope, fb) {
  fb.init();
});

希望这会有所帮助。

<强>更新

  

显然提供商无法注入服务,因为它们只能通过.config()块进行访问

解决方法

  

我们可以使用 $ injector 对象 -

app.service('fb', function($injector) {
  this.init: function(){
     var FacebookProvider = $injector.get('FacebookProvider');
     FacebookProvider.init('YOUR_APP_ID');
  }
});

答案 1 :(得分:0)

@atefth选项很好,但您也可以在路线解析中执行此操作。