在Ionic中Angularfire-seed + module.simpleLoginTools = ng-cloak问题

时间:2014-03-14 13:25:40

标签: angularjs firebase firebase-security ionic-framework

嗨&感谢Firebase,这很棒。

我正在写一本关于部署AngularJS应用程序的书。 Angularfire-seed& amp; Ionic Framework将服务器作为读者部署的示例。 一切都像香草Angularfire-seed聊天应用程序一样,除了登录视图使用ng-cloak指令以下列方式打破登录表单。

Three elements utilize the ng-cloak directive;创建帐户&取消按钮&确认通过输入。

  1. If I remove the ng-cloaks来自上述元素然后 createMode交互按预期工作,但表单不会 提交(显示“请输入电子邮件地址”错误)。
  2. 如果我将ng-cloaks留在那3个元素上,那么就是createMode 互动失败&抛出“请输入电子邮件地址”错误 试。
  3. DevTools控制台中没有任何错误提及任何上述问题&所有必要的依赖关系都已到位(根据Batarang)。我尝试删除所有的Ionic视图代码&将登录视图返回到种子版本&一切都按预期工作......除了我需要在Ionic中工作。

    我找到了gist for module.simpleLoginTools&我想知道在Ionic Framework中使用时,提到的ng-cloak更改是否会导致此问题?

    我的代码可以在GitHub&可以访问已部署的示例@ http://zachariahmoreno.com/portfolio/krakn/#/krakn/home

1 个答案:

答案 0 :(得分:0)

事实证明,问题根本不是由simpleLoginTools引起的,它们效果很好。这个问题是由Ionic大量使用我不知道的隔离范围引起的。

$scope.data = {
        "email"      : null,
        "pass"       : null,
        "confirm"    : null,
        "createMode" : false
}

解决方案是将登录凭证嵌套在$ scope.data对象中,然后修改登录功能以适应新的嵌套结构。

$scope.login = function(cb) {
        $scope.err = null;
        if( !$scope.data.email ) {
           $scope.err = 'Please enter an email address';
        }
        else if( !$scope.data.pass ) {
           $scope.err = 'Please enter a password';
        }
        else {
           loginService.login($scope.data.email, $scope.data.pass, function(err, user) {
              $scope.err = err? err + '' : null;
              if( !err ) {
                 cb && cb(user);
              }
           });
        }
};