我有一个带有输入文本字段的简单视图,用户在其中输入他的名字,控制器必须检索该值并分配给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);
答案 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);
});
});