这是 hash bang urls hash bang urls的一个很好的描述。蝙蝠侠这样做是正常的(几乎所有的 javascript 框架都这样做)。您可以启用“pushstate:true”,这将禁用它(但是,如果您使用的是旧版浏览器,它将退回到 hash bang)。
关于未呈现您的 batman.js 视图,我遇到了类似的问题。我的 chrome 控制台中没有错误,但是视图没有被渲染。您需要确保您有一个 data-yield 属性供您的视图附加到。
例如:
<div id="container" data-yield="main">
</div>
摘自batman.js github:
现在,当您导航到 /#!/faq/what-is-art 时,调度程序会使用 {questionID: "what-is-art"} 运行此常见问题解答操作。它还对@render 进行隐式调用,默认情况下它将在/views/app/faq.html 中查找视图。视图在页面的主要内容容器中呈现,该容器通过在布局的 HTML 中的某个标记上设置 data-yield="main" 来指定。您可以通过在操作中调用 @render false 来防止这种隐式渲染。
您是否尝试显示指向该事物的显示操作的链接?如果你是这样的话,它应该是这样的:
<ul id="things">
<li data-foreach-thing="Thing.all" data-mixin="animation">
<a data-route="routes.things[thing]" data-bind="thing.id"></a>
</li>
</ul>
这是我正在使用的一些代码的示例(数据属性的顺序无关紧要):
<div data-foreach-section="sections" data-mixin="animation">
<a data-bind="section.SectionId" data-route="routes.sections[section]"></a>
<p data-bind="section.Name"></p>
</div>