私のアプリケーションには、ui-router
のstateProvider
で構成された2つのビュー(page1とpage2)があります。私は見ているページに基づいて体にCSSを適用したいです。私がpage1を見ているのであれば、class1
をページの本文に、class2
をpage2に適用したいと思います。なぜng-classはuiルータの現在の状態に応じて適用されていませんか?
これを達成するために、のng-class
という指令を使用しています。 ng-class
ディレクティブの値は、ui-router
の現在の状態に従って設定されています。
ここにそのコードの例がありますが、問題はng-class
内の式が評価されないためです。したがって、私のCSSは適用されません。
私が間違っていることを誰かが指摘できますか?
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.2/angular.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular-ui-router/0.4.2/angular-ui-router.min.js"></script>
<style media="screen">
h2 {
margin: 5px 5px 5px 5px;
}
body {
display: flex;
flex-direction: column;
}
.class1 {
align-items: flex-start;
}
.class2 {
align-items: center;
}
</style>
</head>
<body ng-app="graceApp" ng-class="$state.current.data.bodyClass">
<div ui-view style="display: flex"></div>
<script>
angular
.module('graceApp', [
'ui.router'
])
.config(function ($stateProvider, $urlRouterProvider) {
$stateProvider
.state('page1', {
url: '/page1',
template: '<h2>This is page1</h2> <h2>Item1</h2> <h2>Item2</h2>',
data: {
bodyClass: 'class1'
}
})
.state('page2', {
url: '/page2',
template: '<h2>This is page2</h2> <h2>Item1</h2> <h2>Item2</h2>',
data: {
bodyClass: 'class2'
}
});
$urlRouterProvider.otherwise('/page1');
});
</script>
</body>
</html>
どこに書きますか?モジュールの.run機能の –
ここで ルック:[モジュールのロード&依存](https://docs.angularjs.org/guide/module) .RUN(関数($状態、$ rootScope){ $ rootScope $状態= $状態; 。 }) –
.config(function(){})の後に。 .run(function(){}); –