我正在尝试创建一个控制器函数来提交带有firebase的注册,但是当它们在promise中更新时,范围(controllerAs: $reg
)中的变量似乎没有绑定。
当$reg.loading
更改为 true 时,它会在模板中正确更新,但当更改为 false 时,范围变量会在控制器,但模板忽略它。
$reg.submit = () => {
$reg.loading = true;
firebase.auth().createUserWithEmailAndPassword($reg.user.email, $reg.user.password)
.catch(error => {
$reg.loading = false;
});
};
模板只是我点击提交按钮时调用$reg.submit()
功能的表单(使用 ng-submit & ng-click 进行测试)。
答案 0 :(得分:1)
使用$ scope。$ apply()
$scope.$apply(function() {
$reg.loading = false;
});
答案 1 :(得分:1)
终于找到了我的错误。
我正在使用firebase
公共对象,它不知道我正在使用Angular,我应该使用的是 AngularFire $firebaseAuth(在控制器上注入) >图书馆。
通过这种方式,我有一个承诺,担心自己在Angular中使用$ digest循环:
$reg.submit = () => {
$reg.loading = true;
$firebaseAuth.$createUserWithEmailAndPassword($reg.user.email, $reg.user.password)
.catch(error => {
$reg.loading = false;
});
};
答案 2 :(得分:0)
尝试将范围更改为rootScope。