簡體   English   中英

oboejs :JSON 響應后沒有任何反應

[英]oboejs : Nothing happens after JSON response

JS:

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:

<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 中托管我的應用程序時,調用會超時(30000 毫秒),如果我使用來自 ajax 的 async false:

var jsonData = $.ajax({
        url: "/getPMDResultsByDateAndSeverity",
        dataType: "json",
        crossDomain: true,
        async: false
    }).responseText;

當我使用 async false 時,它​​也不斷耗盡堆內存。 我已經修改了服務器端以達到最佳水平。 使用 async false 時:c.****.algo.MetadataLoginUtil:總時間 26825

使用 async true 后:我認為 oboe.js 在內部做了:

c.****.algo.MetadataLoginUtil:總時間 6321

以上是從服務器端獲取響應所花費的時間。

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

因為調用是異步的,而且 oboe 沒有掛接到 angular 的作用域框架中,所以 angular 在你收到 ajax 響應后不會知道頁面需要重新渲染。

$scope.$apply()告訴 Angular 范圍已經改變,因此刷新頁面顯示。 這個問答更詳細地解釋了這一點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM