2014-09-28 4 views
1

$scope.user을 올바르게 설정하는 데 문제가있는 페이스 북 로그인을 사용하고 있습니다. 콜백에 자동으로 설정되지 않지만 한 번만 페이지의 다른 부분을 클릭하면됩니다. 내가 누락되었지만 도움을 얻을 수있는 간단한 무언가라고 확신합니다.각도 범위가 업데이트되지 않습니다.

내 HTML

<nav class="navbar navbar-default navbar-fixed-top" 
    role="navigation" ng-controller="HomeCtrl"> 
     <p class="navbar-text pull-right"> 
     {{ user.name }} 
     </p> 
     <button 
     class="btn btn-default navbar-btn navbar-right" 
     ng-hide="user" 
     ng-click="login()">Log In With Facebook 
     </button> 
    </nav> 

가 HomeCtrl : 설정되는 $scope.user 것처럼

.controller('HomeCtrl', function($scope) { 
    $scope.user; 

    (function(d, s, id) { 
     var js, fjs = d.getElementsByTagName(s)[0]; 
     if (d.getElementById(id)) return; 
     js = d.createElement(s); js.id = id; 
     js.src = "//connect.facebook.net/en_US/sdk.js"; 
     fjs.parentNode.insertBefore(js, fjs); 
    }(document, 'script', 'facebook-jssdk')); 

    $scope.login = function() { 
     FB.login(function(response) { 
     if (response.status === 'connected') { 
      FB.api('/me', function(response) { 
      console.log(response); 
      $scope.user = response; 
      }); 
     } 
     }, {scope: 'public_profile,email,user_friends'}); 
    } 
    }) 

내가 응답으로 설정 한 후 내가 console.log($scope.user)를 실행하면 보인다, 그러나 그것이 반영 아니에요 다른 요소가 클릭 될 때까지 HTML.

+3

이 수많은'$ 범위 중 하나입니다 $()'관련 질문 같아요 적용됩니다.? – PSL

+0

@PSL, 예. 대답을 남겨두면 받아 들일 테니, 고마워요. – user2954587

답변

3

페이스 북 로그인 콜백은 각도로 실행되지 않습니다. 앵글은 범위를 수정했다는 것을 알 수 없으며 HTML 페이지에서 사용 된 표현식을 재평가해야합니다.

당신은 이렇게 뭔가 범위에서 변경되었음을 각도 알려줄 필요가 :

 FB.api('/me', function(response) { 
     console.log(response); 
     $scope.$apply(function() { 
      $scope.user = response; 
     }); 
     }); 
관련 문제