событие ng-click не срабатывает при нажатии кнопки?

Я создаю веб-приложение в Angularjs я пишу код отдельно .JS-файл для входа из базы данных is выполняется при загрузке страницы, но не запускается при нажатии кнопки, мой. код js:

   var adminModule = angular.module('angApp', []);
   //Defining a Angular Controller
   adminModule.controller('AdminCtrl', ['$scope', '$http',
  `enter code here` function ($scope, $http) {
    Login();
           function Login(U_Name, U_PWD) {
        debugger;
        //Defining the $http service for login the admin user
        $http({
            method: 'POST',
            url: '/Admin/IsAuthenticate',
            data: { User_Name: U_Name, User_PWD: U_PWD }
        }).success(function (result) {

            if (result == true) {
                alert('user is valid');
            }
            else {
                alert('unauthorised access!');
            }
        })
            .error(function (error) {
                //Showing error message 
                $scope.status = 'Unable to connect' + error.message;
            });
    }
       }]);

и мой взгляд, как то, что я использую для привязки этого с помощью Angularjs вот проблема выше код работает на загрузке страницы, но не работает на кнопке нажмите, код, который я использую:

 <div class="admin-login" ng-controller="AdminCtrl" ng-app="angApp">
     <h2>using angularjs</h2>
    <input type="text" id="txtUserAng" placeholder="User Name" ng-model="U_Name" />
    <input type="password" id="txtPWDAng" placeholder="Password" ng-model="U_PWD"  />
    <input type="button" id="login" value="login" ng-click="Login()" />
</div>

кто-нибудь, пожалуйста, помогите мне, что я пропустил здесь, поэтому я не могу вызвать событие ng-click на нажатие кнопки Спасибо заранее.

2 ответов


код Login функция должна быть в области видимости. Прямо сейчас, его по существу частная функция:

$scope.Login = function () {
  ...
}

присвоить функцию переменной области.

 var adminModule = angular.module('angApp', []);
   //Defining a Angular Controller
   adminModule.controller('AdminCtrl', ['$scope', '$http',
   function ($scope, $http) {

           $scope.Login=function (U_Name, U_PWD) {
        debugger;
        //Defining the $http service for login the admin user
        $http({
            method: 'POST',
            url: '/Admin/IsAuthenticate',
            data: { User_Name: U_Name, User_PWD: U_PWD }
        }).success(function (result) {

            if (result == true) {
                alert('user is valid');
            }
            else {
                alert('unauthorised access!');
            }
        })
            .error(function (error) {
                //Showing error message 
                $scope.status = 'Unable to connect' + error.message;
            });
    }
       $scope.Login();
       }]);

редактировать:

попробуйте использовать этот html-код, но я не уверен.возможно, что оба ng-init и ng-controller находятся в одной и той же нагрузке div и ng-controller сначала после этого ng-init :

<div ng-app="angApp">
  <div class="admin-login" ng-controller="AdminCtrl" >
     <h2>using angularjs</h2>
    <input type="text" id="txtUserAng" placeholder="User Name" ng-model="U_Name" />
    <input type="password" id="txtPWDAng" placeholder="Password" ng-model="U_PWD"  />
    <input type="button" id="login" value="login" ng-click="Login()" />
  </div>
</div>