2016-07-21 6 views
1

私はangularjsウェブサイトで作業していますが、タイトルタグに問題があります。 ページから別のページに移動すると更新されません。しかし、私がページをリロードするときだけ、それは変更されます。ここ フォームのPHPの変数を来ismyタイトルタグの内容に:タイトルタグをangularjsで更新するには

<title><?php echo $meta_title; ?></title> 

私は

app.directive('updateTitle', ['$rootScope', '$timeout', 
    function($rootScope, $timeout) { 
    return { 
     link: function(scope, element) { 

     var listener = function(event, toState) { 

      var title = 'Default Title'; 
      if (toState.data && toState.data.pageTitle) title = toState.data.pageTitle; 

      $timeout(function() { 
      element.text(title); 
      }, 0, false); 
     }; 

     $rootScope.$on('$stateChangeSuccess', listener); 
     } 
    }; 
    } 
]); 

このディレクティブを追加し、<title update-title><?php echo $meta_title; ?></title> にタイトルタグを変更しようとしましたが、それはうまくいきませんでした! anglejsにページをリロードせずにこのタグを更新または更新させる方法はありますか?

答えて

0

$windowサービスを含めて使用してください。例えば

$window.document.title = 'My new title'; 

app.directive('updateTitle', ['$rootScope', '$timeout', '$window', 
    function ($rootScope, $timeout, $window) { 
     return { 
      link: function (scope) { 

       var listener = function (event, toState) { 

        var title = 'Default Title'; 
        if (toState.data && toState.data.pageTitle) title = toState.data.pageTitle; 

        $timeout(function() { 
         $window.document.title = title; 
        }, 0, false); 
       }; 

       $rootScope.$on('$stateChangeSuccess', listener); 
      } 
     }; 
    } 
]); 

私がロードされ、現在のビューに基づいてタイトルを更新するために同じ、すなわちのための簡単な指示を書きました。

https://github.com/sagrawal14/angular-extras/blob/master/src/directives/page/title.directive.js

あなたはタイトルを更新するために、どこでも、あなたのHTML内でこのディレクティブを使用することができます。だからタイトルはJavascriptコードに縛られず、代わりにHTMLに依存します。 (関心の分離)

+0

をチェック!私のタイトルの内容はPHPの変数の形で来て、私は "私の新しいタイトル"として追加することはできません –

+0

ちょうど答えを更新しました。 –

+0

私はこのコードを私の頭のタグに追加しましたが、まだ動作しません。 –

0

はそれをinclodeするために、次のコード

app.directive('updateTitle', ['$rootScope', '$timeout', '$window', 
    function($rootScope, $timeout,$window) { 
    return { 
     link: function(scope, element) { 

     var listener = function(event, toState) { 
$window.document.title = 'My new title'; 
      var title = 'Default Title'; 

      if (toState.data && toState.data.pageTitle) title = toState.data.pageTitle; 

      $timeout(function() { 
      element.text(title); 
      }, 0, false); 
     }; 

     $rootScope.$on('$stateChangeSuccess', listener); 
     } 
    }; 
    } 
]); 
+0

私はこのコードを私の指示に追加しましたが、まだ動作しません。タイトルタグに何か変更する必要がありますか? <?php echo $ meta_title; ?>

関連する問題