1

自分自身を指す linkTo に問題があります。実際の問題は、一連のリンクを含むサイドバーを持つアプリケーションにあります。リンクを初めてクリックすると、モデルとビューがロードされ、適切に表示されます。ただし、2 回目のクリックでビューやモデルが消えます。

このjsfiddleで問題を要約しました。インデックス ルートはリンクのリストを表示し、リンクの 1 つをクリックすると詳細が表示されます。詳細ページにそれ自体へのリンクがありますが、クリックしてもモデルが表示されません。

詳細テンプレートはコンテンツを正常に表示しますが、{{firstName}} または {{lastName}} に注意してください

<script type="text/x-handlebars" data-template-name="item">
  <h2>Item Content:</h2>
  {{#linkTo "item" id}}Reload me{{/linkTo}}
  {{content}}
  <ul>
     <li>{{firstName}} {{lastName}}</li>
  </ul>
</script>

この問題は Ember.js に似ていると思います- 2 回目の呼び出しで linkTo エラーが発生しました

更新されたサンプル

{{linkTo}} アイテムが最上位のアプリケーション テンプレートにある、最上位に linkTo を使用した新しい例を次に示します。

<script type="text/x-handlebars" data-template-name="application">
    {{#linkTo "test" 0}}Test 0{{/linkTo}}
    {{outlet}}
</script>

アクションを使用して@intuitivepixelソリューションに従うと、同じ結果が得られます

<script type="text/x-handlebars" data-template-name="application">
    <a href="#" {{action reloadMe "test" 0}}>Test 0</a>
    {{outlet}}
</script>
4

1 に答える 1

0

ヘルパーですべてを実行できるわけではありません{{linkTo}}。この種の機能 (リロードなど) の IMOでは、{{action}}代わりにヘルパーを使用する必要があります。

最初に、呼び出されたときにルーティングを行うアクションを定義します。

App.TestRoute = Ember.Route.extend({
  events: {
    reloadMe: function(route, content) {
      this.transitionTo(route, content);
    }
  },
  serialize: function(model) {
    return {id: model.id};
  }   
});

そして、あなたのテンプレートで:

<a href="#" {{action reloadMe "test" content}}>Reload me</a>

実装方法はこちらをご覧ください: http://jsfiddle.net/FSd6H/4/

それが役に立てば幸い。

于 2013-08-13T20:20:05.200 に答える