我是AngularJS的新手。我正在尝试学习将变量的值传递给angularJS。 但由于某些未知原因,我无法做到。
以下是我认为正确的.jsp页面:
<body >
<div ng-controller="customersController">
<label>Value</label>
<input type="text" ng-model=something></input>
<button ng-click="punchIt()">click me!</button>
<br>Obtained value : {{ value }}
</div>
</body>
在相应的.js页面中,从.jsp文件传递的值未被保留。第一个警报函数应返回假设:某事物的值,但它返回假设: undefined < / em>的。 以下是.js文件:
var myApp = angular.module("getInfo", []);
myApp.controller("customersController", function($scope, $http){
$scope.punchIt = function ($scope, $http) {
var data = {Value: $scope.something};
alert("assumed : "+ $scope.something);
$http.post("http://localhost:8082/HelloWorldWS/services/HelloWorldImpl",data)
.success(function (data, status, header) {
alert("in success " + data);
$scope.value = data;
}).error(function (data) {
alert("in error method " + status);
$scope.value = "error "+ data;
});
};
});
请提出一些建议。 感谢。
答案 0 :(得分:1)
您期望在punchIt()
函数声明中有两个变量($ scope和$ http),但在按钮单击时调用它们时不会传递这些变量。因此,在punchit()
函数中,$ scope和$ http变量都将初始化为空(读取未定义)。
您实际上不需要将这些参数传递给您的函数。您的控制器已经通过控制器声明将这些服务注入其中。
同样声明/初始化控制器中的name
变量。否则,如果您没有在输入字段中输入任何内容并尝试在$ scope
中访问它,则会将其作为未定义进行检索。
您的代码更改如下所示:
myApp.controller("customersController", function($scope, $http){
$scope.name=null;
//OR $scope.name='';
$scope.punchIt = function () {
...
}
}