2016-09-14 62 views
0

我想加載一個不同的網頁(如:google.com)基於AngularJS應用程序中的REST API的響應之前任何HTML加載默認視圖的AngularJS應用程序。我想要加載HTML加載之前不同的網頁 - AngularJS

我已經嘗試在工廠中進行REST服務調用,並在應用程序的.run函數中使用響應,但在頁面重定向之前,我能夠看到Angular應用程序的HTML視圖。

var app = angular.module('myApp',[]); 
app.run(function(myService,$window) { 
myService.someFunc().then(function(data){ 
     $window.location.href = 'http://www.google.com'; 
    }); 
}); 

app.factory('myService',function($http,$window,$q){ 
var self = this; 
this.someFunc = function someFunc(){ 
     var deffered = $q.defer(); 
     $http.get('someAPI').success(function(data){ 
      deffered.resolve(data) 
     }).error(function(error){ 
      deffered.reject(error) 
     }); 
     return deffered.promise; 
    } 
return self; 
}): 
+0

你也許可以使用ngCloak來隱藏HTML,直到所有的東西都被加載並被處理了? – chris22smith

+0

要麼在路由器中使用解析器,要麼在回調中使用角度引導應用程序和手動引導應用程序進行請求。路由器解析延遲加載控制器和模板。儘管最好是展示一些東西 – charlietfl

+0

@ chris22smith:如果我是正確的,ng-cloak用於防止Angular html模板被瀏覽器以原始(未編譯)形式簡單顯示,而您的應用程序是加載。但是我不希望任何東西加載之前,我有來自REST API的響應。感謝您的建議 –

回答

0

我認爲這是一個問題,你不應該解決困難的方式。從角度來看,這似乎很難,但更重要的是這對用戶來說是一個糟糕的體驗。

我會建議使用一個完整的頁面加載頁面加載,寫一些很好的東西給用戶,可能是一個Ajax加載圖標等等,所以用戶知道他正在等待一個原因,並且頁面不只是緩慢。然後,當你的ajax調用返回時,它就會消失,每個人都開心:)

+0

感謝您的建議。但我想在頁面加載開始載入我創建的2個不同頁面之一(基於來自REST API的響應)(1使用Angular和其他JavaScript)之後做出決定(基於來自REST API的響應),我已經使用Javascript實現了期望的結果但現在我想在AngularJS中做類似的事情。 –