アプリケーションを開発し、angularJS の最新の安定版と不安定版を試してみたアプリケーションは、IE 9 と IE8 を除くすべてのブラウザ (およびおそらくそれ以下) で問題なくロードされます。
$rootScope.$on('$locationChangeSuccess', updateRoute); したがって、updateRoute メソッドを呼び出すことはありません。ただし、関数 afterLocationChange が呼び出されます。IE8debugger で実行されている厄介な IE10 のおかげでデバッグできなかった (angularJS で設定したブレークポイントで中断しない) ため、console.log 出力を使用しました。
私は手動でブートストラップしており、ルーティングの特定の方法があります。ng-views ではなく ng-include / ng-switch を使用せず、ルートにアクション プロパティを追加します。このプロパティは、メイン コントローラーによって評価され、スコープに注入されます。ビューは ng-switch に使用しています。updateRoute が呼び出されていないように見えるため、ルーティングの方法に関連しているかどうかはわかりませんが、間違っている場合に備えてコードをここに示します。
ルート定義機能(LOGIN)
{
LOGIN.config
(
[
'$routeProvider', '$locationProvider', '$dialogProvider',
function ($routeProvider, $locationProvider, $dialogProvider)
{
$locationProvider.html5Mode(true).hashPrefix = '!';
$routeProvider
.when("/", { action: "login" })
.when("/forgot_password/", { action: "forgot_password" });
}
]
);
}
アプリケーションコントローラー
function (LOGIN)
{
LOGIN.controller(
'controllerApplication',
[
'$scope', '$route',
function ($scope, $route) {
var self = this;
// Update the rendering of the page.
this.render = function ()
{
// Pull the "action" value out of the currently selected route.
var renderAction = $route.current.action;
// Also, let's update the render path so that we can start conditionally rendering parts of the page.
var renderPath = renderAction.split(".");
// Reset the boolean used to set the css class for the navigation.
var inLogin = (renderPath[0] === "login");
var inPassword = (renderPath[0] === "forgot_password");
// Store the values in the model.
$scope.renderAction = renderAction;
$scope.renderPath = renderPath;
$scope.inLogin = inLogin;
$scope.inPassword = inPassword;
$scope.loaded = false;
};
// Listen for changes to the Route.
// When the route changes, let's set the renderAction model value
// so that it can render in the Strong element.
$scope.$on
(
"$routeChangeSuccess",
function ($currentRoute, $previousRoute)
{
// Update the rendering.
self.render();
}
);
}
]
);
}
そして私の部分的に
<div id="main-container" ng-switch on="renderPath[0]">
<div ng-switch-when="login" ng-include=" 'js/app/login/partials/login.html' "></div>
<div ng-switch-when="forgot_password" ng-include=" 'js/app/login/partials/forgot-password.html' "></div>
</div>
ここにバグを記録しました https://github.com/angular/angular.js/issues/2608
しかし、誰もこの問題を抱えていないのは奇妙に思えるので、人々からの意見をお待ちしています.
IE8 で動作するアプリはまだ見たことがありません。
リンクなどありましたら、ぜひチェックしていただければ幸いです。乾杯。