アプレットの親子コンポーネントは値を渡し、メソッドを呼び出し、オブザーバーはコンポーネント データの変更を監視します (イメージ コンポーネントのカプセル化)。

アプレットの親子コンポーネントは値を渡し、メソッドを呼び出し、オブザーバーはコンポーネント データの変更を監視します (イメージ コンポーネントのカプセル化)。


1. 親コンポーネントが子コンポーネントに値を渡します (画像コンポーネントのカプセル化)

親コンポーネントから値を渡す

// index.wxml
<imgModule src="{
    
    {imgSrc}}"></imgModule>
// index.js
Page({
    
    
  data: {
    
    
    imgSrc: "http://...jpg"
  },
})
// index.json
{
    
    
  "usingComponents": {
    
    
    "imgModule":"/components/global/image/index"
  }
}

サブコンポーネントは受信します

// components/global/image/index.wxml
<image src="{
     
     {imgSrc}}" />
// components/global/image/index.js
Component({
    
    
  /**
   * 组件的属性列表
   */
  properties: {
    
    
    src: {
    
    
      type: String,
      value: "",
      // observer数据监听,监听src变化获取图片临时路径
      observer(nv, ov, path) {
    
    
        if (nv) {
    
    
          // 显示图片
          wx.downloadFile({
    
    
            header: {
    
    
              'cookie': wx.getStorageSync("Set-Cookie")
            },
            url: nv,
            success: (res) => {
    
    
              this.setData({
    
    
                imgSrc: res.tempFilePath
              })
            }
          })
        }
      }
    }
  },
})

2. 子コンポーネントは親コンポーネントの関数を呼び出し、値を親コンポーネントに渡します。

// 子组件
this.triggerEvent("gotoDetail", {
    
    id:"id"})
// 父组件
<newsList id="newsList" bindgotoDetail="handleGotoNewsDetail"></newsList>

3. 親コンポーネントが子コンポーネントの値と関数を呼び出します。

// 父组件
<newsList id="newsList" listArr="{
     
     {culturalList}}" bindgotoDetail="handleGotoNewsDetail"></newsList>
// 父组件直接获取子组件的数据
this.selectComponent('#newsList')
this.selectComponent('#newsList').gotoDetailById() // 父组件调子组件的函数 
this.selectComponent('#newsList').data.listArr // 父组件调子组件的值

おすすめ

転載: blog.csdn.net/weixin_45665171/article/details/128983354