19

私は angular2 と ionic2 から始めています。

ionic2 には、コンポーネントのメソッドを呼び出すボタンがあります。このような:

<button secondary clear large>
</button>

(click)angular2または - ionic2を使用する必要が(tap)ありますか?

このような:

(click)

<button secondary clear large (click)="pause()">
</button>

(tap)

<button secondary clear large (tap)="pause()">
</button>

多少の違いはありますか?http://ionicframework.com/docs/v2/components/#gestures(tap)で 確認できます

どうも。

4

6 に答える 6

52

モバイルアプリを作るなら(tap)もっといいかもしれません。これは、(click)誤ってタップしても、アクションを使用すると常に実行されるためです。(tap)ユーザーがそれを長時間保持している場合、 は実行されません。また、長時間クリックする必要があるボタンが必要な場合は、(press).

一部の ionic バージョンでは、(click)イベントが iOS で実行されないことに注意してください。したがって、 を使用(tap)することをお勧めします。

于 2016-09-22T07:08:08.770 に答える
11

それは、ユーザー エクスペリエンスをどの程度「ネイティブ風」にしたいかによると思います。

(tap)イベントは Hammer.js ライブラリから取得れます。リンクを見ると、タップ イベントが発生するために満たす必要がある要件が表示されます。

注意すべき最初の要件は、デフォルト値が 250ms のtimeオプションです。これは、プレスが 250 ミリ秒を超えると、イベントが発生しないことを意味します。

注意すべき 2 番目の要件は、デフォルト値が 2 のしきい値オプションです (これが何の単位かは不明で、おそらくピクセルです)。これは、プレスの動きが 2 より大きい場合、イベントは発生しないことを意味します。たとえば、画面上で指を左から右に動かし、この動きの間に要素を押すと、動きの速度によってはイベントが発生しない場合があります。

でも

(click)先ほど指摘したように、プレスが離されたときにまだターゲット要素内にあるという条件で、イベントは引き続き発生します。


冒頭で「実際には依存する」と言った理由は、他のアプリがこれらのシナリオをどのように処理するかに基づいています (各アプリは潜在的に異なる可能性があり、ユース ケースの結果に基づいて異なる場合もあります)。

私が確認したAndroidアプリのボタン(ナビゲーションやポップアップメッセージなどの視覚的な結果を持つもの)は(click)、Angularが提供するイベントと同じように機能します。

私がテストしていないのと同じ原則を使用して、IOS アプリがどのように機能するかについてコメントすることはできません。

(click)すべてのユースケースで の代わりに を使用する必要があることを暗示しているわけではありませんが、(tap)他のネイティブ アプリの動作を考慮し、そこから最適なものを決定してください。

于 2016-09-22T12:32:06.403 に答える
1

(tap)最も投票された質問に加えて、パラメーターとして使用するとプロセス$eventが異なることを指摘したいと思います。私の記憶が正しければ、属性を使用(tap)するtargetと、イベントバインディング$eventを持つ要素ではなく、実際にタップした要素になります。これは、要素内にバインドされた(tap)子要素がある場合に関連します。(tap)

于 2018-03-14T18:34:39.867 に答える
1

iOSでは問題があり(click)ましたが、Androidでは問題なく動作しました。iOS でアプリケーションの言語を変更すると、その直後にリンクをクリックしても何も起こりませんでした。それは Ionic クリック ブロッカーhttps://github.com/driftyco/ionic/issues/6996に関連していると思います。

しかし、言語変更後のリンクに変更(click)した後、すぐに機能します。(tap)言語の選択が(しばらく待っても)何も起こらなかったときにも問題があり、それも から(click)に変更したところ(tap)、完全に機能するようになりました。

于 2017-04-05T11:29:17.103 に答える