在Angularjs頁面通過ajax調用加載模板,瀏覽器永遠不會重新加載它的全部內容(一個應用程序)。但是,您可以直接鏈接到頁面本身,Angularjs會指出它需要加載哪些內容。如何判斷Angularjs頁面是否從刷新加載或導航到鏈接?
如何判斷一個頁面是否已直接鏈接到(可能是刷新)或者是否動態加載(例如,使用location.path('/somepath');
時)?
我試過尋找文檔,我還沒有找到任何東西。我可以設置一個本地存儲變量,但似乎矯枉過正。
在Angularjs頁面通過ajax調用加載模板,瀏覽器永遠不會重新加載它的全部內容(一個應用程序)。但是,您可以直接鏈接到頁面本身,Angularjs會指出它需要加載哪些內容。如何判斷Angularjs頁面是否從刷新加載或導航到鏈接?
如何判斷一個頁面是否已直接鏈接到(可能是刷新)或者是否動態加載(例如,使用location.path('/somepath');
時)?
我試過尋找文檔,我還沒有找到任何東西。我可以設置一個本地存儲變量,但似乎矯枉過正。
你可以在任何Angular代碼之前知道它。您可以查看window.location
對象並檢查URL。例如,只需在angular.module('myModule', [...])
行之前執行。
var url = window.location.href;
if (url.contains('/somepath')) {
console.log('do something !');
}
angular.module('myModule', [...])
// Angular code goes on ...
如果我通過按住'Command + R'來刷新頁面,並且我一遍又一遍地執行,那麼沒有任何內容會通過動態加載內容或通過硬刷新來告訴我該頁面是否到達。順便說一句,我沒有讓你失望。 – Johnston
如果您進行了硬刷新(或者如果您來自外部導航),則會傳遞代碼行。如果你已經在Angular中,你永遠不會傳遞這條線。所以你可以說你是來自硬刷新或導航。去嘗試一下。在Angular模塊定義之前添加一個簡單的'console.log(...)'。只有在硬刷新或真正導航之後纔會看到日誌。 – Magus
哦,你的權利。如果頁面是從硬刷新加載的,那麼你只能打一次該代碼? – Johnston
頁面從來沒有真正刷新自己。所有文件都預先加載到瀏覽器中,然後只有內容才能讓人耳目一新。 當您第一次打開頁面時,再次手動刷新頁面角度加載。
我相信你正試圖解決錯誤的問題。如果你告訴我們你想要達到的目標,那麼我們可以提供一個替代方案。 – Joseph