フロントエンドUIに3つの異なるページへの3つのナビゲーションリンクを含むナビゲーションバー(nav-bar)があるMEAN Stackアプリケーションを作成したいと考えています。MEAN Stackアプリでangular nav-barとng-routeを併用するにはどうすればいいですか?
タブ/ナビゲーション項目をクリックすると、対応するページが開きます。 ngRouteを使ってこれを行うことはできますか? はいの場合は、どうですか?
また、MEAN Stackアプリでそのアプリを使用します。 私はui-routerを使ってこれを試みました。それはTomcatにアプリケーションを配備したときに機能しました。 しかし、MEANスタックにコードがデプロイされると、コードは機能しません。
なぜそれが起こっているのか教えてください。
ファイル構造:
Project Name
|-- client
| |-- js
| | `-- app.js
| |-- templates
| | |-- about.html
| | `-- home.html
| `-- views
| `-- index.html
|-- server
|-- node_modules
|-- server.js
`-- package.json
index.htmlを
<!DOCTYPE html>
<html>
<head>
<!-- CSS (load bootstrap) -->
<link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css">
<style>
.navbar { border-radius:0; }
</style>
<!-- JS (load angular, ui-router, and our custom js file) -->
<script src="http://code.angularjs.org/1.2.13/angular.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/angular-ui-router/0.2.8/angular-ui-router.min.js"></script>
<script src="/client/js/app.js"></script>
</head>
<!-- angular app -->
<body ng-app="routerApp">
<!-- NAVIGATION -->
<nav class="navbar navbar-inverse" role="navigation">
<div class="navbar-header">
<a class="navbar-brand" ui-sref="#">AngularUI Router</a>
</div>
<ul class="nav navbar-nav">
<li><a ui-sref="home">Home</a></li>
<li><a ui-sref="about">About</a></li>
</ul>
</nav>
<div class="container">
<div ui-view></div>
</div>
</body>
</html>
app.js
var routerApp = angular.module('routerApp', ['ui.router']);
routerApp.config(function($stateProvider, $urlRouterProvider) {
$urlRouterProvider.otherwise('/home');
$stateProvider
.state('home', {
url: '/home',
templateUrl: '/client/templates/home.html'
})
.state('about', {
url: '/about',
templateUrl: '/client/templates/about.html'
});
});
server.js
var express = require('express'),
app = express();
bodyParser = require('body-parser');
app.use(bodyParser());
app.get('/', function (req, res) {
res.sendfile(__dirname + '/client/views/index.html');
});
app.use('/js', express.static(__dirname + '/client/js'));
app.listen(3000, function() {
console.log('I\'m Listening...');
})