角种子,函数变量来自哪里?

时间:2014-03-21 11:52:38

标签: angularjs

在Github上有一个使用Firebase和AngularFire的角色seed形成Firebase团队,我试图了解它是如何工作的。 login page看起来像这样:

  <form>
    <label>
        <span>email</span>
        <input type="text" ng-model="email" />
    </label>
    <label>
        <span>password</span>
        <input type="password" ng-model="pass" />
    </label>
    <label ng-cloak ng-show="createMode">
        <span>confirm pass</span>
        <input type="password" ng-model="confirm" />
    </label>
    <button ng-click="login()" ng-hide="createMode">Log In</button>
    <button ng-click="createMode = true" ng-hide="createMode">Register</button>
    <button ng-cloak ng-show="createMode" ng-click="createAccount()">Create Account</button>
    <button ng-cloak ng-show="createMode" ng-click="createMode = false">Cancel</button>

    <p ng-show="err" class="error">{{err}}</p>
  </form>

登录功能的controller如下所示:

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

视图调用登录函数:login(),但在控制器中,函数定义像$scope.login = function(cb)一样开始,然后在函数中使用cb。但是函数永远不会被任何变量/对象调用,所以cb在这里发生了什么?

1 个答案:

答案 0 :(得分:1)

从模板调用login函数时不使用该参数,但是如果查看控制器中的$scope.createAccount函数定义,它会调用相同的$scope.login函数,但是已定义回调参数