Vue モバイル開発で better-scroll を使用するときにクリック イベントが失敗する問題の解決策

Vue モバイル開発で better-scroll を使用するときにクリック イベントが失敗する問題の解決策

最近、モバイル プロジェクトの開発方法を学ぶために vue を使用し、スクロールには better-scroll プラグインを使用しました。

better-scrollに導入したコンポーネントで@clickイベントを使用すると、クリックイベントが失敗します。v-on:click、v-bind:click、@click.nativeはすべて機能します。ただし、@touchstartを試したところ、機能します。better-scrollの設定でclick: trueが設定されていないことがわかりました。設定後、クリックイベントは成功します。

その後、vuexを使用すると、

[vuex] 不明なミューテーションタイプ: changeCity

ストアファイルの状態に変異を記述したことに今気づき、自分があまりにも愚かだったので泣きました。 。 。

正しい書き方は次のとおりです。

vue better-scrollのカプセル化と使用

多くのモバイル プロジェクトでは、better-scroll プラグインが使用されていると思います。これにより、ページのスクロールが柔軟になり、アンカーなどの一部の機能の実装も容易になります。

注意: このプラグインは、スクロールしたいコンテンツの高さが親ボックスの高さより大きい場合にのみ機能します。

まず、npmでこのプラグインをインストールします

npm i better-scroll --save

次に、Betterコンポーネントをカプセル化して、グローバルに再利用できるようにします。

<テンプレート>
  <div class="wrapper" ref="wrapper" :style="{height:allHeight}">
   <スロット></スロット>
  </div>
</テンプレート>

<スクリプト>
'better-scroll' から BScroll をインポートします
エクスポートデフォルト{
  データ() {
    戻る {
      すべて高さ:''
    }
  },
  小道具:{
    スクロールハンドル:{
      タイプ:関数、
      デフォルト:関数(){}
    },
    ハンドルToタッチ終了:{
      タイプ:関数、
      デフォルト:関数(){}
    }
  },
  メソッド: {
    ハンドルToScrolltop(y){
      this.scroll.scrollTo(0,y)
    }
  },
  マウント() {
    var scroll = new BScroll(this.$refs.wrapper,{
      タップ:true、
      プローブタイプ:1
    })
    this.scroll = スクロール
     scroll.on('スクロール',(pos)=>{
       this.handleToScroll(位置)
     })
     scroll.on('touchEnd',(pos)=>{
       this.handleToTouchEnd(位置)
     })

  dangqian = this.$refs.wrapper.offsetTop とします
  zongaodu = document.documentElement.clientHeight とします。
  みんなで = 宗高当前
  this.allHeight = all + "px"
  },
}
</スクリプト>
<スタイル>
</スタイル>   

allHeight の動的バインディングは、親ボックスの高さを常にページの下部からの高さにすることで、計算による実装が容易になります。

2つのメソッドが同時にカプセル化されています。1つはスクロールで、プルダウンの更新メソッドです。touchEndはプルダウンの更新後にトリガーされる関数です。他にもプルアップしてさらに読み込むなど、多くのメソッドがあります。公式サイトのドキュメントで確認できます。

次に、このコンポーネントをmain.jsにグローバルに登録します。

'./components/content/Scroller' から Scroller をインポートします。
Vue.component('スクロール',スクロール)

他のコンポーネントでの使用

たとえば、ulタグ内のコンテンツにスクロール効果を持たせたい場合は、次のように記述します。

 <スクローラー>
 <ul>
 </ul>
</スクロール>

カプセル化を使用する場合は、propsを介して通信できます

<スクロール:handleToScroll="handleToScroll" :handleToTouchEnd="handleToTouchEnd">

このように、ページにはこのスクロール効果がありますが、多くのネイティブメソッドがカバーされることに注意してください。ただし、内部プロパティを使用した対応するソリューションもあります。たとえば、ページのアンカーポイントジャンプ

カプセル化されたコンポーネントにy軸を動かすメソッドを記述しました。

  メソッド: {
     ハンドルToScrolltop(y){
       this.scroll.scrollTo(0,y)
     }
   },

どうやって使うの?

使用したいページでこのメソッドを呼び出すと

handleToScrolltop()、対応するoffsetTopを括弧内に入れる

上記は私の個人的な経験です。参考になれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Vueコンポーネントのクリックイベント失敗の問題を解決する
  • Vueのカスタムコンポーネントはクリックメソッドソリューションを使用できません
  • Vue カスタム コンポーネント @click クリック失敗の問題と解決策

<<:  MySql インポート CSV ファイルまたはタブ区切りファイル

>>:  VMware Workstation 15 Pro に Ubuntu 1804 をインストールするチュートリアル (画像とテキスト付き)

推薦する

Nginx操作応答ヘッダー情報の実装

前提条件: ヘッダー情報操作をサポートするには、ngx_http_headers_module モジ...

Nginx の純粋な構成でリアルタイム ログ レポートを実現するためのアイデアと方法

目次序文実装のアイデア実装手順1. Nginxをコンパイルする2. 設定ファイルは以下のとおりです要...

XHTML チュートリアル、XHTML の基礎を簡単に紹介します

<br />この記事では、XHTMLとXHTMLの基礎知識について簡単に紹介します。 X...

Element-uiはテーブル内のセルを直接クリックして編集します

目次成果を達成する実装コード最近、会社でelementUIを使い始めたため、開発の過程でテーブルのセ...

リンク更新ページと js 更新ページの使用例

1. リンクの使用方法:コードをコピーコードは次のとおりです。 <a href="j...

Zabbix の psk 暗号化と zabbix_get 値の組み合わせ

Zabbix バージョン 3.0 以降、Zabbix サーバー、Zabbix プロキシ、Zabbix...

CSS 水平プログレスバーと垂直プログレスバーの実装コード

時々、素敵なスクロールバー効果を見るのは楽しいものです。ここでは、CSSを使用してそれを実現する方法...

Docker環境でMySQLを実行し、Binlogを有効にしてマスタースレーブ同期を構成する方法

同じサーバーで、Docker を使用して Mysql のマスター スレーブ同期設定をシミュレートしま...

nodejs + koa + typescript の統合と自動再起動に関する問題

目次バージョンノートプロジェクトを作成する依存関係をインストールするコンテンツの記入src/serv...

Linux trコマンドの使い方

01. コマンドの概要tr コマンドは、標準入力からの文字を置換、圧縮、削除できます。ある文字セット...

MySQL 5.7 MGR シングルマスター決定マスターノード方式の詳細説明

当銀行のMGRは年末に開始されます。公式文書を読んだり、毎日テストを受けたりしなければなりません。毎...

iframe が HTML 内のページにジャンプするのを防ぎ、iframe を使用して WeChat Web バージョンをページに埋め込む方法

私は、WinForm と HTML5 を組み合わせた小さなものを作りたいだけなのですが、突然、そこに...

CocosCreator 一般的なフレームワーク設計リソース管理

目次Cocos Creator のリソース管理に関する問題リソースの依存関係リソースの使用レスローダ...

CentOS7でルートパスワードをリセットする方法

レンガを移動するプロセスでは、さまざまな環境および構成の問題があり、毎回異なるエラーが発生します。 ...

MySQLデータのグループ化の詳細な説明

グループを作成グループ化は、SELECT ステートメントの GROUP BY 句で設定されます。例:...