1

我有一个这样做的 html 模板。

<ul id="things">
  <li data-foreach-thing="Thing.all" data-mixin="animation">
    <a data-route="routes.things[thing].new" data-bind="thing.id"></a>
  </li>
</ul>

data-route属性返回一个这样的 url:

http://localhost:3000/#!/things/new

我不知道为什么要添加#!

我正在使用带有 rails 3.1 的 batman.js 0.9

任何解决此问题的帮助都将不胜感激,谢谢。

4

1 回答 1

1

这是 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>
于 2012-05-25T15:58:00.147 回答