首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >happens : JSON响应后什么都不会发生

happens : JSON响应后什么都不会发生
EN

Stack Overflow用户
提问于 2018-04-08 09:45:33
回答 1查看 209关注 0票数 3

联署材料:

代码语言:javascript
复制
function OrderFormController($scope, $http) {

$scope.sampleJSON = [];
$scope.sampleJSONDuplicates = [];
oboe('/getPMDResultsByDateAndSeverity')
   .done(function(data) {
    $scope.sampleJSON.push(data.pmdStructureWrapper);
    $scope.sampleJSONDuplicates.push(data.pmdDuplicates);
   })
   .fail(function() {

      console.log('error');
   });

}

html:

代码语言:javascript
复制
<body ng-app ng-controller="OrderFormController">

<div class="splash" ng-cloak="">
    <h2>Please wait, Loading Review Result</h2>
</div>


<div class="col-md-12 col-lg-12" ng-cloak="">
    <div class="panel with-nav-tabs panel-default">
        <div class="panel-heading">
            <ul class="nav nav-tabs">
                <li class="active"><a href="#tab1default" data-toggle="tab">Classes</a></li>
            </ul>
        </div>
        <div class="panel-body">
            <div class="tab-content">
                <div class="tab-pane fade in active" id="tab1default">
                    <ul class="col-md-12 col-lg-12">
                        <li ng-click="showErrorDetails(key)" class="col-sm-12 col-md-4 col-lg-4 eachClassCell"
                            ng-repeat='(key,value) in sampleJSON'>
                            <div ng-if="key.indexOf('.cls') > -1">
                                <div title="{{key}}" class="classNameLabel">{{key}}</div>
                                <div title="Error count" class="errorContainer">
                                    <span class="errorCount">{{value.pmdStructures.length}}</span>
                                    <span class="errorMeter"
                                          ng-repeat="eachClass in value.pmdStructures | limitTo: 10"></span>
                                </div>
                            </div>
                        </li>
                    </ul>
                </div>
        </div>
    </div>
</div>

<form>


</form>
<footer>
    <p>Salesforce Free Code Review, Copyright &copy; 2017</p>
    <p>Contact Us : <a href="mailto:****">Mail Us</a>
    </p>
</footer>
<script type="application/javascript">

    $(function() {
        $('.panel-body li').each(function() {
            if($.trim($(this).text()) === "") {
                $(this).hide();
            }
        });
    });


</script>
</body>

该页不呈现任何内容。我遗漏了什么吗?我知道页面在结果之前呈现,但是如何重新呈现呢?我必须保持它的异步,因为当我在heroku中托管我的应用程序时,调用会超时(30万my ),如果我使用ajax中的异步false:

代码语言:javascript
复制
var jsonData = $.ajax({
        url: "/getPMDResultsByDateAndSeverity",
        dataType: "json",
        crossDomain: true,
        async: false
    }).responseText;

而且,它总是耗尽堆内存,就像我使用异步false时一样。我已经修改了服务器端,使其在最佳水平上执行。使用异步假: c.****.algo.MetadataLoginUtil :总时间为26825

在使用异步true之后:我认为oboe.js内部是这样做的:

c.****.algo.MetadataLoginUtil :总时间为6321

以上是从服务器端获取响应所需的时间。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-08 10:06:43

您需要在$scope.$apply()的末尾调用done()

因为调用是异步的,而双簧管不连接到角的作用域框架,因此角将不知道页面需要在收到ajax响应后重新呈现。

$scope.$apply()告诉角范围已经改变,因此刷新页面显示。This question and answer更详细地解释了这一点。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49716557

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档