Background
在运行angular单页应用的时候,有时候需要能够动态的根据当前的view来切换当前的标题.
JavaScript原生语法中,其实是可以直接利用document.title='xxx'
来实现.
但是根据Kary Gor的建议,所有原生的DOM操作其实都建议在directive中进行.
所以参考StackOverFlow上的一个做法,实现动态切换当前页标题.
Solution
总体的实现步骤分为以下几步:
- 建立一个factory用于控制当前页标题
- 建立一个controller,专门用于控制最上级html的header部分的操作
- 在其他子controller,调用更变页面标题的方法
创建pageService
1 | /** Services for html page such as Header */ |
创建pageController
page-controller.js:
1 | var pageService = require('../services/page-service')(); |
index.html:
在html标签直接添加一个controller作为scope.
一开始是直接在<title></title>
标签内直接使用page.service.getTitle()
的.
但是发现在angular还没有加载完成的时候,默认的标题 会显示成这个表达式本身的字符串,非常丑陋.
于是用了ng-bind
去绑定.在angular数据绑定还没生效的时候,使用原来的默认标题.
1 |
|
其他子controller的调用方法
比如我有一个tag页面:
http://aquariuslt.com/#/tag/Java
我需要将当前页面的标题前缀加上Tag Contains Java
则需要在这个页面的controller中这样调用:
1 | var pageService = require('../../common/services/page-service')(); |