2015-01-22 2 views
0

Это мой первый раз, когда я использовал ember.js. Я пытаюсь использовать контроллер для выполнения действия, когда пользователь успешно подписан (аутентифицирован). Однако мой текущий метод сохранения состояния пользователя или даже изменение свойства this.set ('userSignedIn', state); не работает. Я не совсем уверен, почему, я предполагаю, что это связано с областью моей переменной «state» или, возможно, этот «объект» не передается «ref.authWithOAuthPopup()». Я надеюсь, что кто-то может указать в правильном направлении.Действие проверки подлинности Ember.js не работает

var ref = new Firebase("https://<app>.firebaseio.com"); 
var state = false; 
MyApp.ApplicationController = Ember.Controller.extend({ 
userSignedIn: false, 
actions: { 



    signin: function() { 
     ref.authWithOAuthPopup("facebook", function(error, authData) { 
      if (error) { 
      console.log("Login Failed!", error); 

      } else { 
      console.log("Authenticated successfully with payload:", authData); 
      state = true; 

      } 
     }); 
    this.set('userSignedIn', state);  
    console.log(state); 
    }, // End of signin 



} 
}); 

ответ

1

Вы устанавливаете userSignedIn перед тем Firebase.authWithOAuthPopup(provider, onComplete, [options]) OnComplete обратного вызова обжигают. Вместо этого попробуйте следующее:

signin: function() { 
    controllerContext = this; 
     ref.authWithOAuthPopup("facebook", function(error, authData) { 
      if (error) { 
      console.log("Login Failed!", error); 

      } else { 
      console.log("Authenticated successfully with payload:", authData);  
      state = true; 
      controllerContext.set('userSignedIn', state); 
      console.log(state); 
      } 
     }); 


    }, // End of signin 
+0

Это сделало трюк! Спасибо, @ Даниэль. Итак, моя проблема была, более или менее, javascript, а не ember.js. – xxyyzz

+1

@brto Да, это было меньше Ember.js, больше ошибок JavaScript и обратных вызовов. –