2017-08-13 17 views
1

我想時間(秒)從當用戶導航到一個頁面需要多長時間,到結果通過$http要求攝像時刻需要更新視圖中Angularjs

該網頁上顯示時間

編輯:我顯示這個時候給用戶,類似於谷歌如何搜索後顯示他們

我的代碼如下所示:

UI視圖

<div> 
    <h2>Awesome Surfers Directory</h2> 

    <!-- Display time it took to fetch and display all servers --> 
    <small>Results returned in {{ executionTime }} seconds</small> 

    <!-- Surfer List --> 
    <ul> 
    <li ng-repeat="surfer in surfers"> 
     {{ surfer.firstName + ' ' + surfer.lastName }} 
    </li> 
    </ul> 
</div> 

JS

.state({ 
    name: 'surfers', 
    url: '/getSurfers', 
    templateUrl: 'resources/components/surfers.html', 
    controller: function($scope, $http){ 
    // Lets keep track of how long the fetch takes with a timer 
    var t0 = performance.now(); 
    $http.get('fetchAllSurfers') 
     .then(function(response){ 
     // Bind the results to scope - This could be several hundred results 
     $scope.surfers = response.data; 
     }) 
     .catch(function(error){ 
     // Oh no! 
     console.warn('Woah dude, something like went totally wrong and stuff') 
     }) 
     .finally(function(){ 
     // End the timer & bind to scope 
     var t1 = performance.now(); 
     $scope.executionTime = (((t1 - t0) % 60000)/1000).toFixed(1); 
     }) 

    } 
    }); 

,定時器就會結束的請求完成,但在此之前還有衝浪者實際上是在查看/ UI(我假設是因爲角將顯示一段時間來更新DOM)。我只想知道如何在我的計時器中準確捕捉到這一點?

任何提示或幫助表示讚賞!

+0

爲什麼不通過瀏覽器 - >'Network'? –

+0

@MaximShoustin我將此時間顯示給用戶 –

回答

1

定時器一旦請求完成結束,但還有之前查看/ UI實際上顯示 衝浪者(我假設是因爲 角需要一定的時間來更新DOM)。我只是想 知道如何在我的計時器中準確捕獲這個?

正確的摘要循環需要一些時間來發送和渲染你的東西。

我會嘗試使用ngView -> $viewContentLoaded事件:

發出的每一道的ngView內容被重新裝載時間。

$scope.$on('$viewContentLoaded', function(){ 
    //view content is loaded 
    }); 

你有幾個Chrome擴展角度觀察。這將幫助你理解,如果你有正確的測量:

+0

我發現每次重新加載ngView內容時都會發出'$ viewContentLoaded',但我認爲這並不會在視圖更新時捕獲。我在我的「get」請求後放置了監聽器,但只有當視圖返回時纔會觸發一次,而不是在視圖中顯示「surfers」 –

+0

我欣賞插件!我將def檢查那些出去家裏(不幸的是我不能將它們安裝在我的公司機器上) –

+0

@KuraiBankusu請發佈更多關於你想提供給客戶的信息:完整的網頁,特定元素,... –

相關問題