1

(注: Ember バージョン 1.0.0-rc.3 を使用しています)

ビューを使用して「クリック」をキャッチしようとしている{{linkTo}}ので、新しいテンプレートをロードするだけでなく、追加の操作 (基本的にはサイドバーのユーザーのリストをスクロール) を行うことができます。私はこれに比較的慣れていないので(ただし、ドキュメントを読んだだけです!)、次のようにすればうまくいくと思いました。

「ユーザー」テンプレート:

{{#each user in users}}
    {{#view App.ClickView}}
        {{#linkTo user user}}{{ user.name }}{{/linkTo}}
    {{/view}}
{{/each}}

ビューコード:

App.ClickView = Ember.View.extend({
    click: function(evt) {
        // do stuff
    }
});

コンテキストについては、レイアウト テンプレート:

<div id='sidebar'>
    {{#each user in users}}
        {{#linkTo user user}}{{ user.name }}{{/linkTo}}
    {{/each}}
</div>

<div id='main'>
    {{ outlet }}
</div>

users テンプレートを参照すると、それぞれ{{linkTo}}がビューに含まれていることがわかります。その {{linkTo}} をクリックすると、バブルが発生し、ビュー ( App.ClickView) にキャッチされることを期待しています。残念ながら、そうではありません。クリックが発生したときに、何らかの形でビューにバブルアップされていないよう{{linkTo}}です...どうすればよいですか?

注#1{{linkTo}}( div#mainのみ!div#sidebarのものを置き換えるつもりはありません)を<a>要素に置き換えると、機能し、クリックがビューに引っ掛かります。ただし、このルートをたどりたいかどうかはよくわかりません ( {{linkTo}}! の機能を複製する必要があります)。そして、これを行うためのより良い方法があるべきだと考えています。ある?

注#2:* UserRouteのrenderTemplate()に意図した「何かをする」コードを入れることができることも認識していますが、それに関する問題は、そのルートへのすべてのリンクに対して効果が発生することです(サイドバーにあるもの - これは私が望むものではありません)。特定のs、特に div#main のs に対してのみスクロールをトリガーしたい。{{linkTo}}{{linkTo}}

4

1 に答える 1

1

linkTo の代わりにアンカー (<a>) タグを使用し{{action ... target="view"}}、条件付きロジックをビューに適用し、必要に応じてコントローラーに再送信することをお勧めします ( 、ルーターにバブリングthis.get('controller').send(actionName)させて、ルーター イベント ハンドラーの transitionTo。

于 2013-05-16T17:33:07.510 に答える