2016-04-21 2 views
2

У меня возникла проблема с инициализацией Facebook и других поставщиков, возможно ли выполнить этот код каким-то образом не при запуске приложения, а когда пользователь заходит на страницу, где я хочу ее использовать? Я получаю APP_ID из вызова API, и я не хочу загружать данные, требуемые на странице 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'); 

})

+1

Я думаю, что '.run() block' на определенном контроллере поможет вам. –

+0

«но когда пользователь приходит на страницу, где я хочу его использовать» => просто введите код в контроллер страницы ... Это сделано для этого. –

+0

Pierre - проблема в том, что я не могу использовать FacebookProvider в контроллере – Gatekeeper

ответ

0

Я думаю, что лучший способ сделать это состоит в использовании услуги как это синглтон и не будет инициализирован несколько раз.

Add a facebook service like this -

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

Then you can inject the facebook and call the init method like this -

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

Надеется, что это помог.

UPDATE

Apparently Providers can't be injected into services as they can only be accessed through the .config() block

Обход

We can use the $injector object -

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

Я не могу ввести FacebookProvider в эксплуатацию ... Неиспользуемая ошибка: [$ injector: unpr] Неизвестный поставщик: FacebookProviderProvider <- FacebookProvider – Gatekeeper

+0

вы можете обновить свой вопрос с помощью обновленного кода, который вы используете? – atefth

+0

Я создал сервис точно так же, как вы предложили, но FacebookProvider можно использовать только в конфигурации, я думаю - посмотрите на это https://github.com/Ciul/angular-facebook – Gatekeeper

0

@atefth варианта хорошо, но вы также можете сделать это в маршрутной решимости.

Смежные вопросы