AngularJS 和 Servlet 集成

Posted

技术标签:

【中文标题】AngularJS 和 Servlet 集成【英文标题】:AngularJS and Servlet integration 【发布时间】:2015-06-30 19:15:00 【问题描述】:

我正在尝试调用一个函数,该函数通过链接从 servlet 返回一个 json 对象。

我的html链接,调用fTest函数:

<td><a href="" ng-controller="minaplantaCtrl" ng-click="fTest(x.id_camion_descarga)">ver</a></td>

我的控制器:

app.controller('minaplantaCtrl', function($scope, $http, $window) 
$scope.fTest = function(idDescarga)
      $http.get("http://localhost:8080/BD_INTEGRADA/UnionMinaPlanta?idDescarga="+idDescarga)
      .success(function (response) $scope.descargas = response.descargas;);
      $window.alert(JSON.stringify($scope.descargas));
     ;
);

当我第一次按下时,链接在警报中显示为“未定义”

但是当我再次按下时,如果我能看到在警报中返回的 json 对象

当我先点击链接时会发生什么?请帮忙

谢谢

【问题讨论】:

【参考方案1】:

这里的问题是你在成功回调之外警告 $scope.descargas 因此它确实没有定义但尝试像这样修改它。

app.controller('minaplantaCtrl', function($scope, $http, $window) 
$scope.fTest = function(idDescarga)
      $http.get("http://localhost:8080/BD_INTEGRADA/UnionMinaPlanta?idDescarga="+idDescarga)
      .success(function (response) 
         $scope.descargas = response.descargas;
         $window.alert(JSON.stringify($scope.descargas));
      );
   ;
);

【讨论】:

【参考方案2】:

由于在 Angular 中使用 $http 的每个服务器端请求都是 AJAX,即对服务器的异步调用,因此您假设您的 alert 方法将在成功响应执行完成后被调用。但这是错误的。

这就是 Angular 中 Promise 概念的来源。

app.controller('minaplantaCtrl', function($scope, $http, $window) 
    $scope.fTest = function(idDescarga) 
      console.log("1");

      $http.get("http://localhost:8080/BD_INTEGRADA/UnionMinaPlanta?idDescarga="+idDescarga)
      .success(function (response) 
            $scope.descargas = response.descargas;
            console.log("2");
      );

      console.log("3");
      $window.alert(JSON.stringify($scope.descargas));
     ;
);

因此,当您在服务器端延迟执行此代码时,您会看到控制台日志的顺序为:132强>。

因此,您的成功函数在收到来自服务器的响应时执行。所以第一次,descargas 变量中的值是 null,但是 get 是使用第一个服务器响应存储的,下一次,将显示上一次调用的值。

【讨论】:

以上是关于AngularJS 和 Servlet 集成的主要内容,如果未能解决你的问题,请参考以下文章

AngularJS-选择框Select

Jade模板和angularjs的实际使用

AngularJS 四 服务

AngularJS 依赖注入

你会用AngularJS,但你会写AngularJS文档么?

angularjs哪个版本用的多