Ember.js: アクションが添付されている要素内に含まれている場合、チェックボックスはクリックできません。

作成日 2014年12月04日  ·  4コメント  ·  ソース: emberjs/ember.js

簡単な例、

type = "checkbox"の入力タグが含まれています。 チェックボックスは期待どおりにクリック可能です。 次に、含まれているdivにアクションを設定します。たとえば、クリックイベントをキャッチします...チェックボックスはクリックできなくなります。 'change'イベントをキャッチして、期待どおりに機能しようとしますが、毎回元に戻されることを確認できます。 以下のカップルのフィドル:

期待どおりに動作します。
http://jsfiddle.net/yp128r1e/

しません...
http://jsfiddle.net/yp128r1e/1/

Bug

最も参考になるコメント

デフォルトでは、アクションヘルパーはデフォルトのアクションを防ぎます。 この場合、それはチェックボックスがトリガーされないことを意味します。 ヘルパーにpreventsDefault=falseを設定することで、これをオーバーライドできます。 http://jsfiddle.net/yp128r1e/3/を参照してください

全てのコメント4件

@hilemこれは、実際にはすべてのイベントタイプで問題になるわけではありません。 特にクリックの問題のようです。 Emberが、ブラウザがチェックボックスの状態を変更してはならないことを意味するデフォルトのイベント動作を妨げているのではないかと思います。 これはバグではないと思います。 チェックボックスのような他のものも処理したい場合、解決策はこの方法でアクションハンドラーを適用しないことです。

@wagenetこれは非常に一般的なデザインパターンです。 行のチェックボックスだけでなく、行の任意の場所をクリックして行を選択できるようにするため。 チェックボックスは、選択可能であり、アクセシビリティの理由から、純粋に追加されています。これに対処する唯一の方法は、基本的にチェックボックスを使用せず、画像などでチェックボックスを偽造することです。 これを処理する他の方法がないので。 これは、そうでなければ問題ないアクセシビリティテストに多くの負担をかけます。 ところで、これは他のフォーム要素では問題になりません。 私はチェックボックスでこの振る舞いを見つけただけです。 Emberは、コードが現在設計されている方法を処理するのが難しすぎるため、しばらくの間この問題をパントする必要があると言うことの1つですが、これがバグではないと主張する方法がわかりません。

デフォルトでは、アクションヘルパーはデフォルトのアクションを防ぎます。 この場合、それはチェックボックスがトリガーされないことを意味します。 ヘルパーにpreventsDefault=falseを設定することで、これをオーバーライドできます。 http://jsfiddle.net/yp128r1e/3/を参照してください

ありがとう@wagenet

このページは役に立ちましたか?
0 / 5 - 0 評価