プライマリ ページ ビューを変更するために ngRoute アプローチを使用しようとすると、まったく機能しないように見える Web アプリがあります。ルーティング構成は次のようになります。
var app;
app = angular.module('genehaxx', ['ngGrid','ngRoute', 'ngSanitize', 'ui.bootstrap','genehaxx.filters', 'genehaxx.services'])
.config(function($routeProvider){
//route setup
$routeProvider
.when('/workflows', {
templateURL: '/partials/workspace_view.html',
controller: 'MainController'
})
.when('/jobs', {
templateURL: '/partials/submissions_view.html' ,
controller: 'MainController'
})
.when('/', {
templateURL: '/partials/analyses_view.html',
controller: 'MainController'
})
.when('/analyses', {
redirectTo: '/'
})
.otherwise({
redirectTo: '/'
});
});
function MainController($scope, $modal, $rootScope, User, Data, Workflow, Step){
//lots of proprietary code here..
}
パーシャルの前に「/」を付けて、付けずに試してみました。nginxの下でリバースプロキシされた通常のWebサーバーと、そのディレクトリからhttpサーバーの直下の両方で試しました。どちらの場合も、部分ページがサーバーから要求されたという証拠はまったくありません。メインビュー全体を投稿するには少し毛むくじゃらですが、関連する部分は次のようになります。
<!doctype html>
<html lang="en" ng-app="genehaxx" >
<head>
<meta charset="utf-8">
<title>Welcome to Genengine!</title>
<link href="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/2.3.1/css/bootstrap.min.css" rel="stylesheet" />
<link rel="stylesheet" href="css/app.css"/>
<link rel="stylesheet" href="css/ng-grid.css">
<script src="lib/jquery-2.0.2.js"></script>
<script src="libs/angular/angular.js"></script>
<script src="libs/angular-route/angular-route.min.js"></script>
<script src="libs/angular-sanitize/angular-sanitize.js"></script>
<script src="lib/transition.js"></script>
<script src="lib/bootstrap-custom/ui-bootstrap-custom-tpls-0.10.0.js"></script>
<script src="lib/ng-grid-2.0.7.debug.js"></script>
<script src="js/app.js"></script>
<script src="js/filters.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/underscore.js/1.6.0/underscore.js"></script>
<script src="js/objects.js"></script>
<script src="js/services2.js"></script>
<script src="js/dropdownToggle.js"></script>
</head>
<body>
<div id="main">
<div ng-view></div>
</div>
</body>
</html>
無関係と思われるため、ナビゲーションバーのものは省略しました。それをクリックするか、#whatever を使用して URL を直接入力しても同じ結果が得られます。/libs ディレクトリには、bower の最新の angular、angular-route、angulare-sanitize があります。
小さなサンプルをライブラリにプラグインしようとしましたが、パーシャルが機能しているようで、さらにイライラしています。私は何日もこれに困惑しています。私は本番環境で ng-includes の混乱といくつかの「巧妙な」コードでハッキングしましたが、むしろこれを機能させたいと思います。何か飛び出す?機能しないと言うときは、これらのパーシャルがサーバーから要求されないという点で、ルーティングが発生したという証拠が見られないことを意味します。