哪里可以为angularjs中的每条路线发出http请求?

时间:2016-04-19 02:30:50

标签: angularjs

假设我的网络应用需要发出http请求以获取我的网站标题,网站描述等。由于这些变量对所有页面都是通用的,因此每次用户进入站点时都需要这些变量。

问题是,我该在哪里打电话?在运行区?或者创建一个根控制器来执行这些任务?

2 个答案:

答案 0 :(得分:3)

您可以使用以下两种方法之一:

  1. 在运行块中拨打电话并将值存储在$rootScope和 在任何你想要的地方使用,
  2. 在您所在的州,使用resolve获取页面标题和详细信息,以及 在视图中获取它,以便于在root状态下使用解析并使用 已解析变量作为其他子路径或兄弟路由中的依赖项 获得价值..

        $stateProvider.state('root', {
          resolve:{
    
            // Example using function with simple return value.        
            promiseObj:  function($http){
            // $http returns a promise for the url data
            return $http({method: 'GET', url: '/someUrl'});
          }
        })
       .state('sibling',{
         controller:function($scope,promiseObj){
          $scope.title = promiseObj.title;
         }
        })
    

答案 1 :(得分:0)

您可以在<html>级别定义控制器。

 <html ng-app="app" ng-controller="initCtrl">
   <head>
     <title>{{ Page.title() }}</title>
 ...

您可以创建服务:Page并从控制器进行修改。

myModule.factory('Page', function() {
   var title = //Code to get the title
   .... //Other vars
   return {
     title: function() { return title; },
     setTitle: function(newTitle) { title = newTitle }
     ...
   };
});

从控制器中注入页面并调用'Page.setTitle()'