【问题标题】:batman.js data-route adding characters to urlbatman.js 数据路由向 url 添加字符
【发布时间】:2012-05-24 23:57:47
【问题描述】:

我有一个这样做的 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

感谢任何帮助解决这个问题,谢谢。

【问题讨论】:

  • 我不知道蝙蝠侠为什么要这样做,但是#!被称为 hashbang,对 SEO 非常有用。
  • 好吧,这是有道理的,但是当我点击我的链接时,它会填写 URL,但不会更新我的视图。有什么想法吗?
  • 您的 javascript 控制台中是否有任何错误?如果是这样,我会在此处通过它们,我对您的问题可能在下面进行了拍摄。

标签: javascript ruby-on-rails ruby-on-rails-3 batman.js


【解决方案1】:

这里是哈希爆炸网址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>

【讨论】:

  • 我无法让它工作。当我期待代码时,我只看到 href="#" 根本没有模型或 id...
  • @AlfredNerstu 我们正在遍历部分(需要由控制器填充)。检查sections里面是否有任何东西。如果没有,这可能就是您得到空白 href 的原因。
  • 我得到了其余的数据,例如标题和正文,但没有链接 url...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-20
  • 1970-01-01
  • 1970-01-01
  • 2015-01-25
  • 1970-01-01
相关资源
最近更新 更多