2

「編集」をクリックしてアクション「編集」をトリガーする場合:

  {{#link-to "pages.show" page class="list-group-item"}}
    {{page.name}}
    <span class="badge" {{action "edit" page preventDefault=false}}>edit</span>
  {{/link-to}}

次に、アクションがトリガーされます (たとえば、編集ページが開かれます) が、次の 1 秒でリンクへのリダイレクトが行われるため、「pages.show」ルートに行き着きます。

予想される: アクション「編集」のみが呼び出され、クリック イベント (?) はリンク先ヘルパーに「バブル」されません。

補足事項Ember 2.2 が使用され、上記のテンプレートはコンポーネントの一部です。

追伸:アクション内でpreventDefault=falseを使用すると、この種の動作が停止することを確認しましたが、明らかにリンク先ヘルパーは別の場所から情報を取得します。

4

1 に答える 1

8

必要なものは と呼ばれevent bubblingます。ヘルパーbubbles=false内で使用して無効にできるため、クリックイベントが要素にバブルアップしませんactionlink-to

{{#link-to "pages.show" page class="list-group-item"}}
  {{page.name}}
  <span class="badge" {{action "edit" page bubbles=false}}>edit</span>
{{/link-to}}

http://emberjs.com/api/classes/Ember.Templates.helpers.html#toc_event-propagation

preventDefaultpreventDefaultfalseに設定すると、DOM イベントのデフォルトのブラウザー アクションが許可されます。

于 2016-02-02T16:32:25.877 に答える