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

16 浏览
0 Comments

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

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

使用UI-Router设置页面标题

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

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

但是,假设homeController有一个从服务获取的$scope.todaysDate变量。是否有办法在我的路由器中访问该变量,以便我可以将data和pageTitle更改为以下内容:

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

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

0
0 Comments

从上面的内容可以看出,问题的出现原因是在Angular和UI-Router中,根据控制器中的数据设置页面标题。解决方法是使用resolve来确保某些数据始终可用于状态控制器。

具体的解决方法如下:

1. 在state的配置中添加resolve属性,该属性是一个对象,用于指定需要解析并注入到控制器中的数据。

2. 在resolve对象中,指定一个函数来获取需要注入的数据。这个函数可以调用一个服务(或工厂)中的方法来获取数据,并对数据进行处理。

3. 在控制器中,可以直接使用注入的数据。

通过以上的解决方法,页面标题将会在状态改变之前就被解析和注入到控制器中。

希望这能帮到你。如果需要的话,我可以提供一个可行的示例给你。这是一个非常常见的用例,我认为你可能只是在学习过程中遇到了一些小问题。

0