Search code examples
angularjsangularjs-scope

Angular JS not getting scope value from HTML to controller


I am trying to get the ng-model value from html to controller and getting undefined.

 <div class="row">
      <div class="form-group col-md-12">
           <label class="col-md-2 control-lable" for="uname">User Name</label>
           <div class="col-md-7">
           <input type="text" ng-model="login.user.name" id="uname" class="username form-control input-sm" placeholder="User name" required ng-minlength="3"/>                  
           </div>
           </div>
           </div>
 <button type="button" ng-click="login.getUser(login.user.name)" class="btn btn-warning btn-sm" ng-disabled="myForm.$pristine">Login</button>

In Controller I am using the below code,

function getUser(name){
        console.log('User Name --> '+$scope.login.user.name+" "+$scope.name+" "+self.user.name +$scope.userName+" "+name);

        return LoginService.getUserByName(name);
    }

In app.js I am using controller,

app.config(['$stateProvider', '$urlRouterProvider',
function($stateProvider, $urlRouterProvider) {

    $stateProvider
        .state('home', {
            url: '/',
            templateUrl: 'partials/list',
            controller:'UserController',
            controllerAs:'ctrl',
            resolve: {
                users: function ($q, UserService) {
                    console.log('Load all users');
                    var deferred = $q.defer();
                    UserService.loadAllUsers().then(deferred.resolve, deferred.resolve);
                    return deferred.promise;
                }
            }
        }).state('login', {
            url: '/login',
            templateUrl: 'partials/login',
            controller: 'loginController',
            controllerAs:'login'
          });
    $urlRouterProvider.otherwise('/');
}]);

I am getting undefined in console. Please suggest why I am not able to receive the value.


Solution

  • As i see in your code you using controllerAs syntax. so in your controller probably using var self = this;

    to access models in controller use this

     console.log('User Name --> '+self.user.name);