[英]How can I dynamicly change the <title> tag?
請我想知道如何在angularjs中動態更改內部。
我正在使用NGresource並從后端提取json數據,我想動態更改它,然后例如轉到新文章。
您可以使用angularjs-viewhead在每個視圖的基礎上更改HTML title和head元素。
這里如何使用它。
像往常一樣聲明為您的應用程序的依賴項
var app = angular.module('myApp',['ng','viewhead']);
這種設置可以在AngularJS應用程序中使用view-title指令實現。 首先,設置您的title元素以綁定到特殊的作用域變量viewTitle,該實例變量將在實例化傾斜的視圖時設置:
</title ng-bind-template="{{viewTitle}} - FooBaz">FooBaz</title>
<view-title>About</view-title>
像這樣:
document.title = 'Text';
在與搜索引擎打交道時,在JS中更改標題非常棘手,因為搜索結果中可能會出現大括號,否則頁面標題將不正確。 但是,如果您有適用於Google / Bing / Yahoo!的渲染服務器,那么它將在抓取時立即顯示。 但是,那完全是另一個問題。 為此,請將您的ng-app
指令移至html
屬性:
<html ng-app="myApp">
<head>
<title ng-bind="titleService.currentTitle">My Default Title</title>
</head>
<body>
<ng-view></ng-view>
</body>
</html>
然后創建服務並將其綁定到根作用域:
angular.module('myApp')
.service('TitleService', function($location) {
var DEFAULT_TITLE = 'My Default Title';
return {
setTitle: function(title) {
this.currentTitle = title || DEFAULT_TITLE;
}
};
});
angular.module('myApp').run(function(TitleService, $rootScope) {
// This is mainly for a separation of concerns. These lines could
// easily go in the service definition.
$rootScope.$on('$locationChangeSuccess', TitleService.setTitle);
$rootScope.titleService = TitleService;
});
這樣可以確保默認標題始終為默認設置。 但是,如果您想按控制器/指令設置標題,則可以在代碼內部執行此操作:
angular.module('myApp')
.controller('MainCtrl', function($scope, $location, TitleService, Article) {
// I'm just guessing what your logic might look like
var id = $location.search().articleId;
Article.get(id).then(function(article){
// Set the title however you want with article data
TitleService.setTitle(article.title);
});
});
編輯:我將一行移到運行功能,以將服務的關注與應用程序的關注分開。
嘗試這個:
document.title.innerHTML = "" //Text Goes in Quotes.
祝好運!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.