2012-11-28 139 views
10

我有一個HTML 2 ng-includes。考慮是否有一個ng-include src在服務器中不存在。截至目前它只會加載空白的HTML,並在瀏覽器控制檯,它會說http-404文件沒有找到。所以在這種情況下,我想加載一個默認錯誤頁面(它存在於服務器中),只有一個顯示默認錯誤頁面和其他與通過nginclude加載的正確div的其中一半。

我的邏輯是,我正在使用一個http攔截器,在那裏我攔截所有http調用。每當404發生時,我想返回默認錯誤頁面,它必須只加載到div中。所以它像嘲笑一個正確的http調用,但發送一個錯誤頁面,而不是我認爲必須加載到正確的div。

但是這不是發生:)。我試着用默認的window.load('')。但是,它會加載到頁面的頂部,並存在於各個頁面中。

或者我應該捕獲的div ID(如果是這樣怎麼樣?),然後做塔ID加載默認錯誤的HTML?

需要你在這個想法。

+0

你有沒有你想要做的事情的例子?也許是一個小提琴 –

回答

1

我通過在填充ng-include值之前直接通過$ http傳遞所需的ng-include url來做類似的事情。

$http({ url: url, method: "GET", cache: $templateCache}).success(function(data) { 
     /* there was a template for this url - set the $scope property that 
     * the ng-include is using 
     */ 
     $scope.templateUrl = url; 
    }).error(function() { 
     // there was not a template for this url - set the default one 
     $scope.templateUrl = defaultUrl; 
    }); 

這裏的竅門是通過$ templateCache作爲高速緩存參數$ HTTP - 這意味着獲取的URL存儲在同一高速緩存NG-包括用途,所以當你找到一個有效的模板和將其設置在templateUrl屬性中,ng-include不需要再次獲取模板。