KnockoutとSammyで動作する単純なルーティングメカニズムを取得しようとしています。JQueryだけで動作させることはできますが、SammyとKnockoutで動作させることはできません。コードは次のとおりです。
$(function() {
var myViewModel = {
viewDiv: ko.observable("home") };
var app = $.sammy(function() {
this.get("#/", function() { myViewModel.viewDiv = "home";});
this.get("#/div1", function() { myViewModel.viewDiv = "div1";});
this.get("#/div2", function() { myViewModel.viewDiv = "div2";});
this.get("#/div3", function() { myViewModel.viewDiv = "div3";});
});
$(function() { app.run("#/") });
ko.applyBindings(myViewModel);
});
マークアップは次のとおりです。
<div id="main">
<ul id="link">
<li><a href="#/div1">Div1</a></li>
<li><a href="#/div2">Div2</a></li>
<li><a href="#/div3">Div3</a></li>
<li><a href="#/">Home</a></li>
</ul>
<p>viewDiv:<span data-bind="text: this.viewDiv"></span></p>
</div>
<div id="content">
<div id="home" data-bind="visible: this.viewDiv=='home'">
<h2>Home</h2>
</div>
<div id="div1" data-bind="visible: this.viewDiv=='div1'">
<h2>First Div</h2>
</div>
<div id="div2" data-bind="visible: this.viewDiv=='div2'">
<h2>Second Div</h2>
</div>
<div id="div3" data-bind="visible: this.viewDiv=='div3'">
<h2>Third Div</h2>
</div>
</div>
URLは期待どおりに変更されますが、表示または非表示にするすべてのdivは非表示のままであり、現在のdivを表示する単一のデータバインドには何も表示されません。サミールート内にもコンソールログステートメントがありました。これらは期待通りにdivを記録しました。私はおそらく単純なものが欠けています。誰か助けてもらえますか?前もって感謝します!