微信小程式 發現之旅(三)—— 組件之間的參數傳遞

来源:https://www.cnblogs.com/wisewrong/archive/2018/06/02/9110687.html
-Advertisement-
Play Games

一、URL 傳參 當使用 navigateTo() 方法跳轉頁面的時候,可以在 url 後面接 query 參數 然後在 Page 頁面的生命周期函數 onLoad 中可以接收到這些參數 這種方式只能通過 navigateTo 發送,onLoad 接收 所以只能用於跳轉到非 tabbar 的頁面 二 ...


 

一、URL 傳參

當使用 navigateTo() 方法跳轉頁面的時候,可以在 url 後面接 query 參數

 

然後在 Page 頁面的生命周期函數 onLoad 中可以接收到這些參數

 

這種方式只能通過 navigateTo 發送,onLoad 接收

所以只能用於跳轉到非 tabbar 的頁面

 

 

二、事件處理

之前介紹的 properties 可以從外部傳參到組件內部,如果需要向外部傳參,就需要用到組件事件

自定義組件觸發事件時,在 methods 中添加處理函數,然後使用 triggerEvent 方法,指定事件名,創建自定義事件

然後在調用該組件的時候,添加這個自定義事件的處理函數

但目前只是完成了事件的連鎖,要想通過事件傳參還有很多工作要做

 

小程式的事件處理函數都無法傳入自定義參數,只能接收固定參數 event

 但是可以通過這樣的方式來創建額外參數 item:

然後在事件參數 event 中,event.currentTarget.dataset 來獲取對應的參數

 

 

上面提到的 triggerEvent 方法可以包含三個參數,分別是事件名、detail 對象、事件選項

在獲取到 dataset 中的參數之後,可以當做 detail 對象傳給父組件

由此完成了自定義組件對父組件的傳參

 

關於 triggerEvent 的第三個參數“事件選項”,可以參考這個表格:

 

 

三、組件關係

當兩個自定義組件之間有著嵌套關係的時候,可以在兩個組件之內定義 relations,從而直接訪問對方組件的實例

比如有這樣的兩個組件:

上面的 <w-list> 的通過 <slot> 渲染到了 <w-block> 組件中,形成嵌套關係

這時可以在兩個組件內部定義 relations

// components/w-block/w-block.js
Component({
  relations: {
    '../w-list/w-list': { // 對方組件的相對路徑
      type: 'child', // 關聯的目標節點應為子節點
      linked: function (target) {
        // 每次有custom-li被插入時執行,target是該節點實例對象,觸發在該節點attached生命周期之後
      },
      linkChanged: function (target) {
        // 每次有custom-li被移動後執行,target是該節點實例對象,觸發在該節點moved生命周期之後
      },
      unlinked: function (target) {
        // 每次有custom-li被移除時執行,target是該節點實例對象,觸發在該節點detached生命周期之後
      }
    }
  },
  data: {
    name: "I'm WiseWrong",
    title: "Welcome to my blog",
    address: "http://www.cnblogs.com/wisewrong/"
  }
})

上面是 <w-block> 中定義的 relations,同時還需要在 <w-list> 中定義,並將 type 設為 parent

必須在兩個組件中都定義 relations,否則不會生效

 

在組件內部,可以通過 this.getRelationNodes( 'path' ) 方法獲取到由對應的組件實例組成的數組

當關聯組件不止一個的時候,這個數組會包含所有的組件實例,並按照文檔流的順序排列

通過該方法,可以直接獲取到關聯組件的 data、properties、dataset,但無法獲取到 methods

然後可以通過對應組件的 setData() 方法,修改組件實例的變數

PS:在小程式中,只有通過 setData 方法修改變數,才能即時更新前端頁面(單向綁定)

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 什麼是嚴格模式? 使JS編碼更加規範化的模式,消除Javascript語法的一些不合理、不嚴謹之處,減少一些怪異行為 怎麼使用? 直接添加下麵的這句字元串就可以了,這種語法可以向後相容,如果是不支持嚴格模式的javascript引擎,就會直接當成是一個未賦值的字元串字面量,會直接忽略,支持的引擎就會 ...
  • #######################################################################################介紹Node.js EventEmitterNode.js 所有的非同步 I/O 操作在完成時都會發送一個事件到事件隊列。Nod ...
  • 1 2 3 4 5 6 7 8 Document 9 10 11 12 13 14 第1個li 15 16 17 第2個li 18 19 20 第3個li ... ...
  • 1 const readline = require('readline-sync')//引用readline-sync 2 //用戶名,密碼 3 let user = [{ 4 username: 'yang', 5 password: 123 6 }, { 7 username: 'kai', ... ...
  • 對於剛剛接觸前端開發或者剛開始學習javascript的同學來說,js能用來做些什麼,它是如何誕生的,它的組成結構是怎麼的,在這些問題上可能都只有一些模糊的概念, js的入門篇 就是希望可以從0開始深入淺出的聊一聊JavaScript這門語言,從而讓剛入門的同學對其有個更加清晰和深入的理解。 首先還 ...
  • 1. break 語句可用於跳出迴圈。 break 語句跳出迴圈後,會繼續執行該迴圈之後的代碼(如果有的話): 2. continue 語句中斷迴圈中的迭代,如果出現了指定的條件,然後繼續迴圈中的下一個迭代。 3. continue 語句(帶有或不帶標簽引用)只能用在迴圈中。 break 語句(不帶 ...
  • 事件委托主要用於一個父容器下麵有很多功能相仿的子容器,這時候就需要將子容器的事件監聽交給父容器來做。父容器之所以能夠幫子容器監聽其原理是事件冒泡,對於子容器的點擊在冒泡時會被父容器捕獲到,然後用e.target來判斷到底是哪個子容器觸發了事件 示例代碼: 點擊第二個li,console輸出<li>2 ...
  • CSS原生變數(CSS自定義屬性) 示例地址:https://github.com/ccyinghua/Css-Variables 一、css原生變數的基礎用法 變數聲明使用兩根連詞線"--"表示變數,"$color"是屬於Sass的語法,"@color"是屬於Less的語法,為避免衝突css原生變 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...