簡體   English   中英

如何動態更改 <title>標簽?

[英]How can I dynamicly change the <title> tag?

請我想知道如何在angularjs中動態更改內部。

我正在使用NGresource並從后端提取json數據,我想動態更改它,然后例如轉到新文章。

您可以使用angularjs-viewhead在每個視圖的基礎上更改HTML title和head元素。

這里如何使用它。

  1. 將angularjs-viewhead.js放在資產文件夾中
  2. 像往常一樣聲明為您的應用程序的依賴項

    var app = angular.module('myApp',['ng','viewhead']);

  3. 這種設置可以在AngularJS應用程序中使用view-title指令實現。 首先,設置您的title元素以綁定到特殊的作用域變量viewTitle,該實例變量將在實例化傾斜的視圖時設置:

   </title ng-bind-template="{{viewTitle}} - FooBaz">FooBaz</title>
  1. 在此位置上,向每個視圖的模板添加一個用於設置視圖標題的單個view-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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM