首页 > 解决方案 > Angularjs如何仅在调用init方法后加载div内容

问题描述

我是 AngularJs 的新手,最初是在页面加载时,即。当 loadResponseData() 正在处理时,我需要显示进度 div,并且在 ajax 调用完成后需要显示带有响应数据的成功 div。但是 loadResponseData() 完成后没有显示成功。有没有办法在完成 ajax 调用之前显示进度条,并且应该在从 ajax 调用收到响应后显示成功 div。对不起我的英语,请保存我的一天。

<%
PayBean payBean = (PayBean) session.getAttribute("payData");
%>

<div ng-controller="payCtrl" ng-init="loadResponseData()" id="loadResponseData">

<div class="row">
    <div class="col-12 col-md-12 col-sm-12 col-lg-8">
        <form id="response">
            <div class="row row-space" ng-if="status=='success'">
                // load response data in elements
            </div>
            <div class="row row-space" ng-if="status=='progress'">
                // Progress bar takes place
            </div>
        </form>
    </div>
<div>

payCtrl中的方法:

$scope.loadResponseData = function() {
    $http.post(contextRoot + getResponseData(function(data) {
        var status = sessionStorage.getItem("status");
        $scope.status  = status ;
        sessionStorage.setItem('data', JSON.stringify(data));
    });
};

标签: javaangularjsspring-mvc

解决方案


在此处的指令中尝试此示例$timeout替换为$http并使用ng-show而不是ng-if

var app = angular.module('app',[]);
app.controller('payCtrl',function($timeout,$scope){
    $scope.status = "progress"; //by default set as progress
    
    $scope.loadResponseData = function() {
        console.log("yes called");
        $timeout(function(){
             $scope.status = "success";
        },2000);
    }
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app='app' class="container" ng-controller="payCtrl" ng-init="loadResponseData()" id="oadResponseData">

  <div class="row">
    <div class="col-12 col-md-12 col-sm-12 col-lg-8 center">
      <form id="response" class="success">
        <div class="row row-space" ng-show="status== 'success'">
          <h1>success code loaded</h1>
        </div>
        <div class="row row-space" ng-show="status== 'progress'">
          <h1>Progress code loaded</h1>
        </div>
      </form>
    </div>
    <div>


推荐阅读