必要なすべてを実行する次の HTML + Angular アプリ シェルがあります。
- ページの読み込み時に URL ハッシュが空の場合、に初期化され
#/
ます。 - URL ハッシュが変更されるたびに、
view
変数が更新されます。
これは完全に機能します:
<!DOCTYPE html>
<html ng-app>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.3/angular.js"></script>
<script>
function Router($scope) {
if (location.hash === "") location.hash = "#/";
$scope.view = createView(location);
window.addEventListener("hashchange", function (event) {
$scope.view = createView(event.newURL);
$scope.$apply();
});
}
function createView(url) {
var parser = document.createElement("a");
parser.href = url.toString();
var hash = parser.hash;
return (hash.replace("#/", "/views/") + "/index.html").replace("//", "/");
}
</script>
</head>
<body ng-controller="Router">
Navigation:
<a href="#/one/">one</a>
<a href="#/two/">two</a>
Partial: {{view}}
<!--<div ng-include="view"></div>-->
</body>
</html>
次に、唯一の問題は、コメントを外すとすぐにdiv[ng-include]
、すべてが機能しなくなることです。具体的には、hashchange
イベントの発生が停止します。私は何か間違ったことをしていますか、それともこれはバグですか? 回避策はありますか?