再帰的にアプレットページを生成するためのマイクロチャンネル

最近、業界の選択のための需要がある、小さなプログラムを書いて、次のような効果を準備します。

                                    

 

達成するためにバン・崩壊やラジオボタンを使用します。

問題が発生した、〜ハハ、ハローの周りにあると推定され、8も可能である必要があり、死者10を書き、再帰のいくつかの層を知る必要はありません

オンラインビットを検索し、あなたが達成するための部品(コンポーネント)の方法を使用することができます。

特定以下を達成。

1.その後、崩壊ラジオのフォルダを作成してコンポーネントを生成する、「新しいコンポーネント」、という名前のインデックスを右クリックして、コンポーネントのフォルダを作成します。次のように構造化:

次のように図2に示すように、コードindex.wxmlファイルです。

<!--component/collapse-radio/index.wxml-->
<van-collapse value="{{ activeName[item.id] }}" data-id="{{item.id}}" bind:change="onChange" accordion>
  <view wx:for="{{item.children}}" wx:key="id">
    <van-collapse-item wx:if="{{!item.is_leaf}}" title="{{item.name}}" name="{{item.id}}" data-index="{{index}}" data-id="{{item.id}}">
      <collapse-radio item="{{item}}"></collapse-radio>
    </van-collapse-item>
    <view wx:else> 
      <van-cell title="{{item.name}}" value-class="value-class">
        <van-radio name="{{item.id}}" />
      </van-cell>
    </view>
  </view>
</van-collapse>

3、index.js代码如下:

// component/collapse-radio/index.js
Component({
  /**
   * 组件的属性列表
   */
  properties: {
    item: Object
  },

  /**
   * 组件的初始数据
   */
  data: {
    activeName: {}
  },

  /**
   * 组件的方法列表
   */
  methods: {
    // 展开面板
    onChange(event) {
      console.log(event);
      const id = event.target.dataset.id;
      const activeName = this.data.activeName;
      activeName[id] = event.detail;
      console.log(activeName);
      this.setData({
        activeName: activeName
      });
    }
    
  }
})

4、在app.json中配置组件:

5、在页面中使用

<van-radio-group>
  <collapse-radio item="{{item}}"></collapse-radio>
</van-radio-group>

6、js代码

const list = [{
  id: '1',
  name: '金融业',
  is_leaf: 0,
  children: [{
    id: '11',
    name: '银行业',
    is_leaf: 0,
    children: [{
      id: '111',
      name: '中央银行',
      is_leaf: 1
    }, {
      id: '112',
      name: '商业银行',
      is_leaf: 1
    }, {
      id: '113',
      name: '其他银行',
      is_leaf: 1
    }]
  }, {
    id: '12',
    name: '证券业',
    is_leaf: 1
  }, {
    id: '13',
    name: '保险业',
    is_leaf: 0
  }]
},{
  id: '2',
  name: '教育业',
  is_leaf: 1
}, {
  id: '3',
  name: '房地产业',
  is_leaf: 0
}];
Page({

  /**
   * 页面的初始数据
   */
  data: {
    item:{
      id: '0',
      name: '',
      is_leaf: 0,
      children:list
    }
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {

  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})

就可实现递归效果。

 

おすすめ

転載: www.cnblogs.com/zhaidq/p/11227532.html