[解決済み] AngularJSの部分的なビューに基づいて動的にヘッダーを変更するには?
2022-03-24 18:36:41
質問
ng-viewを使ってAngularJSの部分ビューをインクルードしていますが、インクルードされたビューに基づいてページタイトルとh1のヘッダタグを更新したいのです。しかし、これらは部分ビューコントローラの範囲外なので、コントローラ内のデータセットにバインドする方法を見つけることができません。
ASP.NET MVCだったら@ViewBagを使えばいいのですが、AngularJSでこれに相当するものはわかりません。共有サービス、イベントなどについて検索しましたが、まだ動作させることができません。私の例を修正して動作させる方法があれば、とてもありがたいです。
私のHTML
<html data-ng-app="myModule">
<head>
<!-- include js files -->
<title><!-- should changed when ng-view changes --></title>
</head>
<body>
<h1><!-- should changed when ng-view changes --></h1>
<div data-ng-view></div>
</body>
</html>
私のJavaScriptです。
var myModule = angular.module('myModule', []);
myModule.config(['$routeProvider', function($routeProvider) {
$routeProvider.
when('/test1', {templateUrl: 'test1.html', controller: Test1Ctrl}).
when('/test2', {templateUrl: 'test2.html', controller: Test2Ctrl}).
otherwise({redirectTo: '/test1'});
}]);
function Test1Ctrl($scope, $http) { $scope.header = "Test 1";
/* ^ how can I put this in title and h1 */ }
function Test2Ctrl($scope, $http) { $scope.header = "Test 2"; }
解決方法は?
でコントローラを定義することができます。
<html>
レベルである。
<html ng-app="app" ng-controller="titleCtrl">
<head>
<title>{{ Page.title() }}</title>
...
サービスを作成します。
Page
を作成し、コントローラから修正します。
myModule.factory('Page', function() {
var title = 'default';
return {
title: function() { return title; },
setTitle: function(newTitle) { title = newTitle }
};
});
インジェクト
Page
で、コントローラから 'Page.setTitle()' を呼び出します。
以下はその具体例です。 http://plnkr.co/edit/0e7T6l
関連
-
[解決済み】リソースの読み込みに失敗した:Bind関数でサーバーが500(Internal Server Error)のステータスで応答した【非公開
-
[解決済み】エラー。Ionic使用中にモジュール '../lib/utils/unsupported.js' が見つかりませんでした。
-
[解決済み] Access-Control-Allow-Originヘッダーはどのように機能するのですか?
-
JSクリックイベント - Uncaught TypeError: プロパティ 'onclick' に null を設定できません。
-
[解決済み] JavaScriptで要素のクラスを変更するにはどうすればよいですか?
-
[解決済み] 2つのJavaScriptオブジェクトのプロパティを動的にマージするにはどうすればよいですか?
-
[解決済み] AngularJSでデータバインディングはどのように機能するのですか?
-
[解決済み] AngularJSを使用して、ブラウザのコンソールで$scope変数にアクセスするにはどうすればよいですか?
-
[解決済み] AngularJSで$scope.$watchと$scope.$applyを使用するにはどうすればよいですか?
-
[解決済み] AngularJSのコントローラからビューにHTMLを挿入する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
vue3レスポンシブ対応のためのsetup+ref+reactive
-
Vueがechartsのtooltipにクリックイベントを追加するケーススタディ
-
WeChatアプレット用ユニアプリによるグローバルシェアリング
-
元のイベントが実行されなかった後に要素を追加するためのjQueryソリューション
-
vueが定義するプライベートフィルタと基本的な使い方
-
[解決済み] 配列の結合時に未定義のプロパティ 'push' を読み込むことができない
-
[解決済み】ExpressJS - throw er Unhandled errorイベント
-
Uncaught TypeError: null のプロパティ 'offsetHeight' を読み取れませんでした。
-
jq は html ページとデータを動的に分割する。
-
[解決済み】Angularjs - ng-cloak/ng-show要素がブリンクする。