get-current-pages.uvue 2.9 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
<template>
  <page-head title="getCurrentPages"></page-head>
  <view class="uni-padding-wrap">
    <button @click="_getCurrentPages">getCurrentPages</button>
    <view v-if="pages.length" style="padding: 15px 0px">
      <text>当前页面栈中 {{ pages.length }} 个页面,列表如下:</text>
      <template v-for="(page, index) in pages" :key="page.route">
        <text style="margin-top: 5px">index: {{ index }}, route: {{ page.route }}</text>
      </template>
    </view>
    <button class="btn btn-get-page-style" type="primary" @click="getPageStyle">getPageStyle</button>
    <button class="btn btn-set-page-style-1" type="default" @click="setPageStyle(true)">setPageStyle(true)</button>
    <button class="btn btn-set-page-style-0" type="default" @click="setPageStyle(false)">setPageStyle(false)</button>
    <textarea class="textarea" :value="pageStyleText" :maxlength="-1" :auto-height="true"></textarea>
    <text class="tips">
      当前版本仅支持设置属性 enablePullDownRefresh
    </text>
  </view>
</template>

<script>
  class Page {
    constructor(public route : string) {
    }
  }

  export default {
    data() {
      return {
        checked: false,
        pages: [] as Page[],
        currentPageStyle: {} as UTSJSONObject
      }
    },
    computed: {
      pageStyleText() : string {
        return JSON.stringify(this.currentPageStyle)
      }
    },
    onPullDownRefresh() {
      setTimeout(() => {
        uni.stopPullDownRefresh()
      }, 3000)
    },
    methods: {
      _getCurrentPages: function () {
        this.pages.length = 0
        const pages = getCurrentPages()
        this.pages.push(new Page(pages[0].route))
        if (this.pages[0].route.includes('/tabBar/')) {
          this.checked = true
        }
        for (let i = 1; i < pages.length; i++) {
          this.pages.push(new Page(pages[i].route))
          if (pages[i].route.includes('/tabBar/')) {
            this.checked = false
          }
        }
      },
      getPageStyle() {
        const pages = getCurrentPages();
        const currentPage = pages[pages.length - 1];
        this.currentPageStyle = currentPage.$getPageStyle();
      },
      setPageStyle(epr : boolean) {
        // 目前仅支持 enablePullDownRefresh
        const pages = getCurrentPages();
        const currentPage = pages[pages.length - 1];
        currentPage.$setPageStyle({
          enablePullDownRefresh: epr
        });
      },
      // getCurrentPage(): Page {
      //   const pages = getCurrentPages();
      //   const currentPage = pages[pages.length - 1];
      //   return currentPage;
      // }
    },
  }
</script>


<style>
  .btn {
    margin-top: 10px;
  }

  .textarea {
    margin-top: 5px;
    padding: 5px;
    background-color: #fff;
  }

  .tips {
    font-size: 12px;
    margin-top: 10px;
    opacity: .8;
  }
</style>