我在初始化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');
})
答案 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选项很好,但您也可以在路线解析中执行此操作。