2016-03-07 69 views
1

我正在尝试将viewTitle添加到基本视图或根网页应用程序页面,例如,在控制器中使用全局模板变量angularjs

根页

<div ng-app="app"> 
    {{viewTitle}} 
    <div ui-view=""></div> 
</div> 

可以更改viewTitle在控制器?

控制器-1

var myApp = angular.module(app, []); 
myApp.controller('ChildController', ['$scope', function($scope) { 
    // how to update viewTitle here ? 
}]); 
+1

您可以采取的帮助 - http://stackoverflow.com/questions/12506329/how-to-dynamically-change-header-based-on-angularjs-partial-view –

+1

您不需要首先为该部件指定控制器吗? –

回答

0

我觉得可以用$rootScope用于此目的。请看下面。

HTML模板

<body ng-app="myApp" > 
     {{viewTitle}} 
     <div ui-view=""></div> 
    </div> 
</body> 

JS文件

myApp.config(函数($ stateProvider,$ urlRouterProvider){

$urlRouterProvider.otherwise('/home'); 

$stateProvider 
    .state('home', { 
     url: '/', 
     template: '<h1>From nested view </h1>', 
     controller: function($rootScope) 
     { 
      $rootScope.viewTitle = "home"; 
     } 
    }); 

});

希望它可以帮助

+0

我试过[这](http://plnkr.co/edit/bFiqVYkyn3sQKmJM8JD2?p=preview),不要认为它会正常工作。 –

+0

是的,你是对的。 –

2

一种解决方案可能是这样的: 如果你使用的UI路由器可以在状态添加标题:(我用这个翻译标题)

.state('login', { 
      url: '/login', 
      controller: 'AdminLoginController', 
      templateUrl: 'app/admin/views/login.html', 
      title: { 
       'es': 'Iniciar sesión', 
       'en': 'Login', 
       'de': 'Einloggen' 
      } 
     }) 
.state('panelAdmin', { 
      url: '', 
      controller: 'AdminHomeController', 
      templateUrl: 'app/admin/views/panelAdmin.html', 
      title: { 
       'es': 'Panel de administración', 
       'en': 'Control panel', 
       'de': 'Führungspanel' 
      } 
     }) 

而在$ stateChangeStart重装标题:

$rootScope.$on("$stateChangeStart", function (event, toState, toParams, fromState, fromParams) { 

    if (toState.title) { 
    $rootScope.title = toState.title[$rootScope.cultureLang]; 
    } 

}); 

index.html中:

<title>{{title}}</title>