2016-09-14 88 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中做类似的事情。 –