web-dev-qa-db-fra.com

L'événement ng-click ne se déclenche pas lors du clic sur le bouton?

je crée une application web dans Angularjs j'écris du code dans un fichier .js séparé pour me connecter à partir de la base de données est exécuté au chargement de la page mais ne se déclenchant pas en cliquant sur le bouton, mon code .js est:

var adminModule = angular.module('angApp', []);
//Defining a Angular Controller
adminModule.controller('AdminCtrl', ['$scope', '$http',
    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;
            });
        }
    }]);

et mon avis comme ce que j'utilise pour lier ceci en utilisant Angularjs voici un problème au-dessus du code fonctionne sur le chargement de la page mais ne fonctionne pas sur le clic du bouton, le code que j'utilise est:

<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>

n'importe qui s'il vous plaît aidez-moi ce que je manque ici, donc je ne suis pas en mesure de déclencher un événement ng-click sur un clic de bouton merci à l'avance.

7
Amit Sharma

Votre fonction Login doit être sur une portée. À l'heure actuelle, c'est essentiellement une fonction privée:

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

assigner une fonction à une variable de portée.

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();
    }]);

Modifié:

essayez d'utiliser ce code html, mais je ne suis pas sûr.il se peut que ng-init et ng-controller soient dans la même charge div et ng-controller d'abord après ce 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>
3
Mukund Kumar