根据控制器中的数据,使用Angular和UI-Router设置页面标题

时间:2014-07-11 18:15:52

标签: angularjs angular-ui-router

我目前正在使用此问题中的指令来更改我的页面标题。

Set Page title using UI-Router

然后,在我的app.js文件中,我将pageTitle附加到数据,如下所示:

.state('home', {
  url: '/home'
  templateUrl: 'home.html'
  controller: 'homeController'
  data: {
    pageTitle: 'Home'
  }
})

但是,例如,如果homeController有一个从服务中获取的$scope.todaysDate变量。有没有办法在我的路由器中访问该变量,所以我可以将数据和pageTitle更改为:

data: {
  pageTitle: 'Home ' + $scope.todaysDate
}

我可以进入控制器并使用$rootScope.pageTitle = 'some value'当我查看Batarang控制台工具时,我可以看到它将变量更改为'some value',但实际页面标题不会更改

1 个答案:

答案 0 :(得分:2)

在这种情况下,也许resolve会起作用。如果要确保状态控制器始终可以使用某些数据,则可以使用解决方法。例如,假设我有一个叫做的服务,"日历"它暴露了一个名为" getTodaysDate"的函数。我可以做到以下几点:

.state('home', {
    url: '/home',
    templateUrl: 'home.html',
    controller: 'homeController',
    resolve:{
            pageTitle:  function(calendar){
            return 'Home ' + calendar.getTodaysDate();
        }
    }
})

现在" pageTitle"将被解决并注入" homeController"在国家改变之前。希望这会有所帮助。