如何在AngularJS中将ng-model值检索到控制器

时间:2015-01-27 18:06:45

标签: javascript angularjs model-view-controller

我有一个带有输入文本字段的简单视图,用户在其中输入他的名字,控制器必须检索该值并分配给employeeDescription变量。问题是ng-model值(来自输入)没有来到控制器,我只是尝试使用像RadimKöhler解释Cannot get model value in controller method in angular js这样的$ watch但是不起作用。我认为这一定很简单。

还可以尝试从$ scope中检索name变量(ng-model),例如$scope.employeeDescription = $scope.name;,但不检索值,Google Chrome控制台也不会给我任何输出关于那个。任何解决方案?

的index.html

<!DOCTYPE html>
<html>
<head>
    <link rel="stylesheet" type="text/css" href="css/bootstrap.min.css">
</head>

<body ng-app='angularApp'>
    <div ng-controller='nameController'>
        <div>
            Name <input type="text" ng-model='name' />
        </div>

        Welcome {{employeeDescription}}
    </div>

    <script type="text/javascript" src="angular.min.js"></script>
    <script type="text/javascript" src="app.js"></script>
</body>
</html>

app.js

(function(angular) {
    var myAppModule = angular.module('angularApp', []);

    myAppModule.controller('nameController', function($scope) {
        $scope.employeeDescription = name;
    });

})(window.angular);

1 个答案:

答案 0 :(得分:1)

您的代码应该失败,因为永远不会定义控制器中的'name'变量。您在代码中定义了两个变量:$ scope.employeeDescription和$ scope.name(在输入的ng-model中定义)。请注意,正在定义'$ scope.name',而不是'name'。

我的建议是只留下一个变量:

<div>
    Name <input type="text" ng-model='employeeDescription' />
</div>

myAppModule.controller('nameController', function($scope) {
    $scope.$watch('employeeDescription', function() {
        console.log($scope.employeeDescription);
    });
});