Angular JS没有从HTML到控制器的范围值

时间:2017-04-22 15:22:33

标签: angularjs angularjs-scope

我试图将ng-model值从html变为控制器并获得未定义。

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

在控制器中我使用以下代码,

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

        return LoginService.getUserByName(name);
    }

在app.js我正在使用控制器,

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

我在控制台中未定义。请说明为什么我无法收到该值。

1 个答案:

答案 0 :(得分:0)

正如我在您的代码中看到的,您使用controllerAs语法。所以在您的控制器中可能使用var self = this;

访问控制器中的模型使用此

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