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

これがハッシュバンURLの良い説明ですハッシュバンURL。これは、バットマンがこれを行うのは正常です(ほとんどすべてのjavascriptフレームワークがこれを行います)。「pushstate:true」を有効にすると無効になります(ただし、レガシーブラウザを使用している場合はハッシュバンにフォールバックします)。

batman.jsビューがレンダリングされないことに関して、私は同様の問題に遭遇しました。Chromeコンソールでエラーは発生しませんでしたが、ビューがレンダリングされていませんでした。ビューをアタッチするためのdata-yield属性があることを確認する必要があります。

例えば:

<div id="container" data-yield="main">
</div>

batman.js githubからの抜粋:

/#!/ faq / what-is-artに移動すると、ディスパッチャは{questionID:"what-is-art"}を使用してこのFAQアクションを実行します。また、@ renderを暗黙的に呼び出します。これは、デフォルトで/views/app/faq.htmlでビューを検索します。ビューは、ページのメインコンテンツコンテナ内にレンダリングされます。このコンテナは、レイアウトのHTMLのタグにdata-yield="main"を設定することで指定されます。アクションで@renderfalseを呼び出すことにより、この暗黙のレンダリングを防ぐことができます。

物事のショーアクションへのリンクを表示しようとしていますか?次の場合は、次のようになります。

<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 に答える