2016-03-07 74 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>