vueでのmint-uiの使用例

亚连
亚连オリジナル
2018-05-26 14:54:381597ブラウズ

Mint UI は、Ele.me フロントエンド チームによって立ち上げられた Vue.js をベースとしたモバイル コンポーネント ライブラリです。この記事では主に vue での mint-ui の使用例を紹介します。必要に応じて、パートナーはここにまとめられています。参考にしてください

この記事はvueでのmint-uiの使用例を紹介し、皆さんと共有します。詳細は以下の通りです:

まず、mint-uiの中国語ドキュメントを置きます

私は最近mint-uiを使っています。いくつかのプラグインが説明していることがわかりました。上記はあまり詳細ではなく、使用されているコードがいくつかの例で見つかりません。 github での共有にはすべてのマークダウン ファイルが含まれており、その内容はオンライン ドキュメントです

オンラインで見つけられる情報はあまり詳細ではないので、自分で書きます。更新し続けてください...うーん、大丈夫です、私はとても怠け者です。他の人にも役立つことを願っています。

mint-uiの機能をご紹介します

機能の紹介

  1. Mint UIには豊富なCSSとJSコンポーネントが含まれており、日々のモバイル開発ニーズを満たすことができます。これにより、統一されたスタイルのページを迅速に構築し、開発効率を向上させることができます。

  2. オンデマンドでのコンポーネントの真のロード。ファイル サイズが大きすぎることを気にせずに、宣言されたコンポーネントとそのスタイル ファイルのみをロードできます。

  3. モバイル端末のパフォーマンス閾値を考慮して、Mint UIはCSS3を使用してさまざまなアニメーションを処理し、ブラウザの不必要な再描画や再配置を回避し、ユーザーがスムーズでスムーズなエクスペリエンスを得ることができます。

  4. Vue.js の効率的なコンポーネント化ソリューションに依存している Mint UI は軽量です。すべてインポートしたとしても、圧縮ファイルのサイズは gzip でわずか約 30kb (JS + CSS) です。

このコンポーネント ライブラリは、Vue に基づいたモバイル ページ開発に適しています。

1.セルの使い方

まずは画像を投げてみましょう↓

スイッチを入れるときはテキストにしてリストの両側にスイッチを入れたいです。効果が出なかったため、私と同じようにスイッチのドキュメントやスイッチに関する情報を必死に探している人がたくさんいることがわかりました。それなら実際にはセルを使うべきです。

<mt-cell title="开关状态">
  <mt-switch v-model="openValue" @change="changeStatus"></mt-switch>
</mt-cell>

セルレイアウトを使用し、スイッチと組み合わせます。次の結果が得られます。

2.無限スクロールとNavbarを併用します。

ナビゲーションバーは次のようになります↓

無限スクロールは次のようになります↓

この2つの組み合わせは、無限スクロールを01faedfe0cd51a6fbe4c239f1b0634f10a498abdab711bcb7571c1ebac2d6a1d 里面,然后效果就出来了。

简单的就是酱紫的。

<mt-navbar v-model="selected" >
  <mt-tab-item id="1">选项一</mt-tab-item>
  <mt-tab-item id="2">选项二</mt-tab-item>
</mt-navbar>
<mt-tab-container v-model="selected">
  <mt-tab-container-item id="1">
    <p v-infinite-scroll="loadMore"
        infinite-scroll-disabled="loading"
        infinite-scroll-distance="10"
        class="content"
    >
    </p>
  </mt-tab-container-item>
  <mt-tab-container-item id="2">
    <p v-infinite-scroll="loadMoreReceive"
        infinite-scroll-disabled="loadingReceive"
        infinite-scroll-distance="10"
        class="content"
    >
    </p>
  </mt-tab-container-item>
</mt-tab-container>

这样基本页面就出来了。

有个小问题就是,这是一个页面,滚动条是共用的。也就是说,你在选项卡一拉出来好几页数据之后,再到选项卡二,滚动条的位置是不会变的,你的选项卡二的内容,会被拉出来好多页的数据。如果某个选项卡的数据比较少,会影响到其他选项卡的数据加载。

这个问题,找了半天,最后发现一个和简单的办法。在Infinite-Scroll里面,添加一个 v-if=selected == id

ただの紫です。

<p v-infinite-scroll="loadMore"
  infinite-scroll-disabled="loading"
  infinite-scroll-distance="10"
  class="content"
  v-if="selected == 1"
>

基本ページが表示されます。

小さな問題は、これが Pages であることです。スクロール バーは共有されます。つまり、タブ 1 で数ページのデータを抽出してからタブ 2 に移動すると、スクロール バーの位置は変化せず、タブ 2 のコンテンツが多くのページのデータから抽出されます。タブのデータが少ない場合、他のタブのデータ読み込みに影響します。

この問題を長い間探した結果、ついに簡単な解決策を見つけました。 Infinite-Scroll で、v-if=selected == id を追加し、Infinite-scroll とタブの id および selected を組み合わせます。選択した selected が id に対応する場合にのみ、対応する Infinite -スクロール。

Infinite-Scrollのコードは次のとおりです:

getRegion(){
  var root=this;
  <!-- 通过/region 接口获取三级地址,然后存入regionArr -->
  http.get("/region").then(function (data) {
    root.regionArr=data.data.data;
    <!-- 存放省 -->
    for(var i=0;i<root.regionArr.length;i++){
      root.region_province[i]=root.regionArr[i].value;
    }
    <!-- 存放市 -->
    for(var i=0;i<root.regionArr[0].children.length;i++){
      root.region_city[i]=root.regionArr[0].children[i].value;
    }
    <!-- 存放区 -->
    for(var i=0;i<root.regionArr[0].children[0].children.length;i++){
      root.region_zone[i]=root.regionArr[0].children[0].children[i].value;
    }
    root.region=[
      {
        flex: 1,
        values: root.region_province,
        textAlign: &#39;left&#39;,
        className:&#39;picker_Slot&#39;

      },
      {
        pider: true,
        content: &#39;-&#39;,
        className: &#39;slot2&#39;
      },
      {
        flex: 1,
        values: root.region_city,
        textAlign: &#39;center&#39;,
        className:&#39;picker_Slot&#39;
      },
      {
        pider: true,
        content: &#39;-&#39;,
        className: &#39;slot2&#39;
      },
      {
        flex: 1,
        values: root.region_zone,
        textAlign: &#39;right&#39;,
        className:&#39;picker_Slot&#39;
      }
    ]

  });

},

必要に応じてv-if条件を変更します。

v-infinite-scroll にバインドされたメソッドは、vue がマウントされた後とその前に初めて実行され、個別に呼び出す必要はありません。

3. ピッカー、アドレスの 3 レベルの連携

ここには非常に簡単な 3 レベルの連携がありますが、以前使用したいと思ったときに見つかりませんでした。自分で書くのはとても面倒です。まず写真を載せてください

まずアドレスを取得してください

onValuesChange(picker, values) {
  var root=this;
  var str_1=[];
  var str_2=[];
  for(var i in root.regionArr){
    // 获取省,并重置市级名称
    if(root.regionArr[i].value == values[0]){
      for(var j in root.regionArr[i].children){
        str_1.push(root.regionArr[i].children[j].value);
        // 获取市级,并重置区级的名称
        if(root.regionArr[i].children[j].value == values[1]){
          // 当市级下不存在区名市,置空。
          if(root.regionArr[i].children[j].children != null){
            for(var k in root.regionArr[i].children[j].children){
              str_2.push(root.regionArr[i].children[j].children[k].value);
            }
          }else{
            str_2.push(" ");
          }
        }
      }
      picker.setSlotValues(1, str_1);
      picker.setSlotValues(2, str_2);
    }
  }

  // 赋值,初始时置为上一页返回的值
  root.$set(root.printerMessage,&#39;province&#39;,values[0] == null ? root.printerMessage.province : values[0]);
  root.$set(root.printerMessage,&#39;city&#39;,values[1] == null ? root.printerMessage.city : values[1]);
  root.$set(root.printerMessage,&#39;area&#39;,values[2] == null ? root.printerMessage.area : values[2]);
}

、それから第3レベルのアドレスを設定してください

rrreee

上記は私が皆さんのためにまとめたものです。未来のみんな。

関連記事:

h5履歴に基づいてajaxリストリクエストエクスペリエンスを向上させる

AJAXコアオブジェクトについて簡単に説明する

🎜🎜🎜🎜ajaxデータ送信方法の詳細な例🎜🎜🎜🎜🎜🎜 🎜🎜🎜

以上がvueでのmint-uiの使用例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。