假设我的网络应用需要发出http请求以获取我的网站标题,网站描述等。由于这些变量对所有页面都是通用的,因此每次用户进入站点时都需要这些变量。
问题是,我该在哪里打电话?在运行区?或者创建一个根控制器来执行这些任务?
答案 0 :(得分:3)
您可以使用以下两种方法之一:
$rootScope
和
在任何你想要的地方使用,在您所在的州,使用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()'
。