Angularjs 绑定不适用于Angular.js和Firebase简单登录
我看到Firebase简单登录与Angular一起使用时出现一些奇怪的行为 我无法按预期绑定$scope变量。我认为成功登录后,$scope.test或$scope.test会改变,但事实并非如此。即使在登录后,它仍然保持为false。考虑到这是我的第一个角度项目,我猜这是一个简单的项目,但我已经找遍了所有地方,还没有找到答案 代码非常简单。首先是HTML:Angularjs 绑定不适用于Angular.js和Firebase简单登录,angularjs,firebase,Angularjs,Firebase,我看到Firebase简单登录与Angular一起使用时出现一些奇怪的行为 我无法按预期绑定$scope变量。我认为成功登录后,$scope.test或$scope.test会改变,但事实并非如此。即使在登录后,它仍然保持为false。考虑到这是我的第一个角度项目,我猜这是一个简单的项目,但我已经找遍了所有地方,还没有找到答案 代码非常简单。首先是HTML: <body ng-app> <div ng-controller="LoginController">
<body ng-app>
<div ng-controller="LoginController">
<div ng-hide="test">
<h1>Welcome. Please log in.</h1>
<p>Test is {{test}}</p>
<label>Username</label>
<input type="text" ng-model="username" />
<label>Password</label>
<input type="password" ng-model="password" />
<button ng-click="login()">Log in</button>
</div>
<button ng-show="test" ng-click="logout()">Log out</button>
</div>
<script type='text/javascript' src='https://cdn.firebase.com/js/client/1.0.6/firebase.js'></script>
<script type='text/javascript' src='https://cdn.firebase.com/js/simple-login/1.2.5/firebase-simple-login.js'></script>
<script type="text/javascript" src="js/lib/angular.js"></script>
<script type="text/javascript" src="js/controllers/LoginController.js"></script>
</body>
感谢所有能为我指出正确方向的人。您需要使用
$scope.$apply()
让angular知道您已经更改了scope上的某些内容。在将第三方库与监视的作用域变量集成时,需要这样做
$scope.auth = new FirebaseSimpleLogin(FB, function(error, user){
$scope.$apply(function() {
if(error) {
$scope.error = error;
} else if(user) {
// would expected binding to take effect here, but not
$scope.user = user;
$scope.test = true;
} else {
console.log("no user");
}
}
});
您需要使用
$scope.$apply()
让angular知道您已经更改了scope上的某些内容。在将第三方库与监视的作用域变量集成时,需要这样做
$scope.auth = new FirebaseSimpleLogin(FB, function(error, user){
$scope.$apply(function() {
if(error) {
$scope.error = error;
} else if(user) {
// would expected binding to take effect here, but not
$scope.user = user;
$scope.test = true;
} else {
console.log("no user");
}
}
});
您需要使用
$scope.$apply()
让angular知道您已经更改了scope上的某些内容。在将第三方库与监视的作用域变量集成时,需要这样做
$scope.auth = new FirebaseSimpleLogin(FB, function(error, user){
$scope.$apply(function() {
if(error) {
$scope.error = error;
} else if(user) {
// would expected binding to take effect here, but not
$scope.user = user;
$scope.test = true;
} else {
console.log("no user");
}
}
});
您需要使用
$scope.$apply()
让angular知道您已经更改了scope上的某些内容。在将第三方库与监视的作用域变量集成时,需要这样做
$scope.auth = new FirebaseSimpleLogin(FB, function(error, user){
$scope.$apply(function() {
if(error) {
$scope.error = error;
} else if(user) {
// would expected binding to take effect here, but not
$scope.user = user;
$scope.test = true;
} else {
console.log("no user");
}
}
});
你的登录名真的被调用了吗?在您的登录方法中使用'auth'时,您可能会遇到问题,而不是$scope。您似乎没有使用AngularFire,这有助于缩小Angular和Firebase之间的差距。他们甚至有一个种子项目(ala angular seed),该项目具有可工作的登录控制器,可以进行3路数据绑定!你应该去看看。你的登录名真的被调用了吗?在您的登录方法中使用'auth'时,您可能会遇到问题,而不是$scope。您似乎没有使用AngularFire,这有助于缩小Angular和Firebase之间的差距。他们甚至有一个种子项目(ala angular seed),该项目具有可工作的登录控制器,可以进行3路数据绑定!你应该去看看。你的登录名真的被调用了吗?在您的登录方法中使用'auth'时,您可能会遇到问题,而不是$scope。您似乎没有使用AngularFire,这有助于缩小Angular和Firebase之间的差距。他们甚至有一个种子项目(ala angular seed),该项目具有可工作的登录控制器,可以进行3路数据绑定!你应该去看看。你的登录名真的被调用了吗?在您的登录方法中使用'auth'时,您可能会遇到问题,而不是$scope。您似乎没有使用AngularFire,这有助于缩小Angular和Firebase之间的差距。他们甚至有一个种子项目(ala angular seed),该项目具有可工作的登录控制器,可以进行3路数据绑定!你应该去看看。显然是一个新手的错误。这和预期的一样。谢谢Phil。我发现$timeout比$scope安全一点。$apply。特别是在Firebase中,方法有时会同步返回(即可能已经在应用范围内,这会导致错误),这显然是一个新的错误。这和预期的一样。谢谢Phil。我发现$timeout比$scope安全一点。$apply。特别是在Firebase中,方法有时会同步返回(即可能已经在应用范围内,这会导致错误),这显然是一个新的错误。这和预期的一样。谢谢Phil。我发现$timeout比$scope安全一点。$apply。特别是在Firebase中,方法有时会同步返回(即可能已经在应用范围内,这会导致错误),这显然是一个新的错误。这和预期的一样。谢谢Phil。我发现$timeout比$scope安全一点。$apply。特别是Firebase,其中方法有时会同步返回(即可能已经在应用范围内,这会导致错误)