2014-10-09 70 views
0

我是AngularJS的新手。我正在学习将变量的值传递给angularJS。 但由于某些未知的原因,我无法做到。如何使用AngularJS保留JSP的变量值

下面是.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文件传递价值没有得到retained.The第一个警报函数返回假设:东西的价值,但它是假设返回:undefined。 下面是.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

'NG-模型= something'显然不会插入一个JSP变量。是不是有写JSP到视图语法? – tymeJV 2014-10-09 15:56:56

回答

1

您在期望punchIt()函数声明中有两个变量($ scope和$ http),但在按钮单击时调用它时不会传递这些变量。因此,在你的punchit()函数中,$ scope和$ http变量都会被初始化为空(未定义)。

你实际上不需要将这些参数传递给你的函数。您的控制器已经通过您的控制器声明将这些服务注入到其中。

还声明/初始化您的控制器中的name变量。否则,如果您没有在输入字段中输入任何内容并尝试在您的$ scope中访问它,则会将其作为未定义进行修改。

你的代码更改看起来如下:

myApp.controller("customersController", function($scope, $http){ 
    $scope.name=null; 
    //OR $scope.name=''; 
    $scope.punchIt = function() { 
    ... 
    } 


}