更改firebase承诺时,范围变量不绑定

时间:2016-09-17 11:09:29

标签: javascript angularjs firebase firebase-authentication

我正在尝试创建一个控制器函数来提交带有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 进行测试)。

3 个答案:

答案 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。