通常の関数を介してグローバル変数にアクセスしようとしていますが、可能ですか?
$rootScope を使用して var を設定しましたが、コールバック関数を介してこれにアクセスしようとしています。このコールバックはコントローラーから呼び出されます。$rootScope
そのコールバックを渡したくありません。
それにアクセスする方法はあります$rootScope.var
か?
可能であれば、私はサービスを利用します。
提案してください。
ありがとう
次のように rootScope にアクセスしようとしています。
function fbLandingCtrl($scope, $rootScope) {
$rootScope.isFBLoggedin = false;
$scope.login = function() {
console.log( $rootScope.isFBLoggedin);
fbHelper.login(getUserInfo);
};
function getUserInfo(){
fbHelper.getUserInfo(updateStatus);
}
function updateStatus(userInfo){
$rootScope.isFBLoggedin = true;
console.log( $rootScope.isFBLoggedin);
}
}
私のサービスは次のとおりです。
myapp.factory('FBService', [ '$rootScope', function ($rootScope) {
$rootScope.isFBLoggedin = false; // global variable
$rootScope.userName = null;
$rootScope.userEmail = null;
return {
getStatus: function() {
return $rootScope.isFBLoggedin;
},
setStatus: function(status) {
console.log("Status:"+status);
return $rootScope.isFBLoggedin = status;
}
};
}]);
updateStatus fn の下に isFBLoggedin が true として表示されていますが、ビューには反映されていません
印刷{{isFBLoggedin}}
していますが、ts は false を示していますか?
最後にその作業。
@dluzのソリューションに従いました。
$rootScope.$apply(function() {}})
ビューをレンダリングするためにも使用しました