2016-09-20 27 views
0

我需要在我的應用程序中顯示頁面時添加延遲。我正在使用angularjs框架。之所以我需要這樣做是因爲,即使我的DOM已完全呈現,來自angularjs的數據仍在讀取中,並未添加到DOM中。我曾嘗試將暫停添加到ui-view但是它沒有辦法。Javascript如何添加顯示DOM元素的延遲?

+0

不讀取任何數據都有某種完整的回調? – nnnnnn

+0

有關其他信息,我正在從一個相當大的json文件中讀取json對象。發生了什麼是我有一個指令,將一個元素值綁定到json對象。儘管html元素已經被加載,例如span,並且span中的值仍然從json文件中讀取,這會導致延遲顯示span元素中的值。 – czartm

+0

最好的方法是向路由器添加一個解析器,這樣視圖甚至不會在加載JSON之後才加載。 – EvilZebra

回答

1

嘗試使用超時功能:

var app = angular.module('myApp', []); 
app.controller('myCtrl', function($scope, $timeout) { 
    $scope.myHeader = "Hello World!"; 
    $timeout(function() { 
     $scope.myHeader = "How are you today?"; 
    }, 2000); 
}); 

More Information ...

0

我不明白你爲什麼要延遲頁面加載

我從你的問題,瞭解什麼是您的網頁獲得以未編譯形式顯示
嘗試使用

ng-cloack directive 

ngCloak指令用於防止瀏覽器在加載應用程序時以原始(未編譯)形式簡要顯示Angular html模板。使用此指令可避免由html模板顯示引起的不良閃爍效應。

該指令可應用於<body>元素,但首選的用法是將多個ngCloak指令應用於頁面的小部分,以允許逐步呈現瀏覽器視圖。

這裏是完整的文檔

https://docs.angularjs.org/api/ng/directive/ngCloak

0

使用resolve選項加載視圖之前加載你的JSON。 Documentation.

例如:

resolve: { 
    return $http({method: 'GET', url: '/someUrl'}) 
       .then (function (data) { 
        return doSomeStuffFirst(data); 
       }); 
}