Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 分配给Div的控制器中的AngularJS方法不工作_Javascript_Jquery_Angularjs - Fatal编程技术网

Javascript 分配给Div的控制器中的AngularJS方法不工作

Javascript 分配给Div的控制器中的AngularJS方法不工作,javascript,jquery,angularjs,Javascript,Jquery,Angularjs,我在一个页面中有一个登录表单,它有自己的控制器来处理登录功能,但是由于某种原因,在提交表单时没有启动登录功能 较大视图文件中的表单: <div class="login-wrap" ng-controller="LoginCtrl as logincontrol"> <form ng-class="{submited: submited}" class="form-login" novalidate name="loginForm" x-ng-submit="

我在一个页面中有一个登录表单,它有自己的控制器来处理登录功能,但是由于某种原因,在提交表单时没有启动登录功能

较大视图文件中的表单:

<div class="login-wrap" ng-controller="LoginCtrl as logincontrol">

        <form ng-class="{submited: submited}" class="form-login" novalidate name="loginForm" x-ng-submit="logincontrol.login()">

            <div class="form-group" ng-class="{errorEmail: loginForm.email.$error.required || loginForm.email.$error.email}">
                <input type="email" name="email" id="email" class="form-control login-form-input" placeholder="{{'Email' | translate}}" x-ng-model="username" required>
            </div>

            <div class="form-group" ng-class="{errorPassword: loginForm.password.$error.required}">
                <input type="password" id="password" name="password" class="form-control login-form-input" placeholder="{{'Password' | translate}}" x-ng-model="password" required>
            </div>

            <div class="text-center">
                <button class="btn btn-success login-button" type="submit" translate>SIGN IN</button>
            </div>

        </form>

</div>

登录
登录控件:

angular.module('services.security')
    .controller('LoginCtrl', function ($scope, securityService, $rootScope) {
        $scope.messages = {
            error: false
        };

        console.log("HERE");

        $scope.submited = false;

        $scope.loading = false;

        var validateEmail = function( email ) {
            var pattern = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;

            return email.match( pattern );
        };

        $scope.login = function() {
            console.log("clicked");

            $scope.submited = true;

            if ( !$scope.loginForm.email.$viewValue ) {
                $scope.loginForm.email.$dirty = true;
                $scope.loginForm.email.$invalid = true;
                $scope.loginForm.email.$error.required = true;
            }

            if ( !$scope.loginForm.password.$viewValue ) {
                $scope.loginForm.password.$dirty = true;
                $scope.loginForm.password.$invalid = true;
                $scope.loginForm.password.$error.required = true;
            }

            if ( validateEmail($scope.loginForm.email.$viewValue) ) {
                if ( $scope.loginForm.$valid ) {
                    $scope.messages.error = false;
                    $scope.loading = true;

                    securityService.login($scope.loginForm.email.$viewValue, $scope.loginForm.password.$viewValue).then(function() {
                        $scope.loading = false;
                    }, function(data) {
                        console.log(data)
                        $scope.loading = false;;
                    });
                }
            } else {

                if ( $scope.loginForm.email.$viewValue ){
                    $scope.loginForm.email.$dirty = true;
                    $scope.loginForm.email.$invalid = true;
                    $scope.loginForm.email.$error.email = true;
                }
            }

        };
    });
angular.module('services.security'))
.controller('LoginCtrl',函数($scope,securityService,$rootScope){
$scope.messages={
错误:false
};
console.log(“此处”);
$scope.submited=false;
$scope.loading=false;
var validateEmail=函数(电子邮件){
变量模式=/^([^()[\]\\,;:\s@\“]+(\.[^()[\]\,;:\s@\“]+)*)(\'+\”)(\[[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[1,3}.[0-9]{1,3}.];
返回电子邮件。匹配(模式);
};
$scope.login=函数(){
控制台日志(“单击”);
$scope.submited=true;
if(!$scope.loginForm.email.$viewValue){
$scope.loginForm.email.$dirty=true;
$scope.loginForm.email.$invalid=true;
$scope.loginForm.email.$error.required=true;
}
if(!$scope.loginForm.password.$viewValue){
$scope.loginForm.password.$dirty=true;
$scope.loginForm.password.$invalid=true;
$scope.loginForm.password.$error.required=true;
}
if(validateEmail($scope.loginForm.email.$viewValue)){
如果($scope.loginForm.$valid){
$scope.messages.error=false;
$scope.loading=true;
securityService.login($scope.loginForm.email.$viewValue,$scope.loginForm.password.$viewValue)。然后(function(){
$scope.loading=false;
},函数(数据){
console.log(数据)
$scope.loading=false;;
});
}
}否则{
if($scope.loginForm.email.$viewValue){
$scope.loginForm.email.$dirty=true;
$scope.loginForm.email.$invalid=true;
$scope.loginForm.email.$error.email=true;
}
}
};
});

加载登录视图时,控制台中会打印此处的
,因此会加载控制器,但是在提交表单时,登录功能不会启动(即
单击的
不会打印)。

通过在HTML代码中将
LoginCtrl指定为logincontrol
来创建实例

如果要与
$scope
变量一起使用,只需指定
ng controller=“LoginCtrl”

$scope
替换为

Angular的定义如下:

下面包括两种不同的声明样式:

  • 可以使用
    this
    将方法和属性直接绑定到控制器上:
    ng controller=“settings controller1 as settings”
  • $scope
    注入控制器:
    ng controller=“settings controller2”