在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
在这里发生了什么?
答案 0 :(得分:1)
从模板调用login
函数时不使用该参数,但是如果查看控制器中的$scope.createAccount
函数定义,它会调用相同的$scope.login
函数,但是已定义回调参数