微信小程式的點擊事件、頁面跳轉、數據綁定、數據修改、獲取用戶信息及定位、for指令、獲取用戶上傳圖片

来源:https://www.cnblogs.com/suncolor/archive/2022/12/16/16987747.html
-Advertisement-
Play Games

小程式中實現頁面跳轉 對標簽綁定點擊事件 data是點擊時傳入的參數 <view bindtap="clickMe" data-nid="123" data-name="SD" >點我跳轉</view> /** * 用戶點擊事件 */ clickMe(e){ console.log(e) var n ...


小程式中實現頁面跳轉

對標簽綁定點擊事件

data是點擊時傳入的參數
<view bindtap="clickMe" data-nid="123" data-name="SD" >點我跳轉</view>

    /**
   * 用戶點擊事件
   */
  clickMe(e){
    console.log(e)
    var nid = e.currentTarget.dataset.nid  //通過這種方式可以拿到傳過來的參數
    console.log(nid)

頁面跳轉

通過wx里的方法跳轉

// navigateTo, redirectTo 只能打開非 tabBar 頁面。
// switchTab 只能打開 tabBar 頁面。
// reLaunch 可以打開任意頁面。
    wx.switchTab({
      url: '/pages/home/home', // 路由後面可以加?的方式傳參數,調用頁面路由帶的參數可以在目標頁面的onLoad方法中獲取。
    })
  }

通過標簽跳轉(類似a標簽)

<navigator url="/pages/redirect/redirect?id=666">跳轉到新頁面</navigator> 只能跳轉非tabbar頁面

數據綁定

  • wxml

    <view>數據1:{{message}}</view>
    
  • 展示數據

    // pages/bind/bind.js
    Page({
    
      /**
       * 頁面的初始數據
       */
      data: {
        message:"沙雕李業",
      }
    )}
    

數據雙向綁定

前臺input框修改了,js里的data數據也會相應改變

wxml

input框添加了一個bindinput屬性,後面接了一個函數,當input框的值變化時,就會觸發bindPhone函數
<view>手機號:</view>
<input value="{{phone}}" bindinput="bindPhone" placeholder="請輸入手機號"></input>

js

// 該函數實時跟新數據的值
  bindPhone:function(e){
    this.setData({ phone:e.detail.value});
  },

數據修改

  • wxml

    <view>數據2:{{message}}</view>
    
    <button bindtap="changeData">點擊修改數據</button>
    
  • 修改數據

    Page({
      data: {
        message:"沙雕李業",
      },
      changeData:function(){
        // 修改數據
        this.setData({ message: "大沙雕李業"});
      }
    })
    

獲取用戶信息

方式一

  • wxml

    <view bindtap="getUserName">獲取當前用戶名</view>
    
  • js

      getUserName:function(){
      	// 調用微信提供的介面獲取用戶信息
        wx.getUserInfo({
          success: function (res) {
            // 調用成功後觸發
            console.log('success',res)
      	  // 然後可以用this.setData修改對應數據,展示在前臺上,註意this指的不是pages的而是wx了
      	  // 我們需要在getUserName函數後面使用var that = this ,然後在wx里就可以使用that.setData修改對應數據了
          },
          fail:function(res){
            // 調用失敗後觸發
            console.log('fail', res)
          }
        })
      },
    

方式二

  • wxml

    當點擊該按鈕時,會彈出一個框詢問是否授權獲取用戶信息
    <button open-type="getUserInfo" bindgetuserinfo="xxxx">授權登錄</button>
    
  • js

     xxxx:function(){
        wx.getUserInfo({
          success: function (res) {
            // 調用成功後觸發
            console.log('success', res)
          },
          fail: function (res) {
            // 調用失敗後觸發
            console.log('fail', res)
          }
        })
      }
    

    註意事項:

    • 想要獲取用戶信息,必須經過用戶授權(button)。

    • 已授權

    • 不授權,通過調用wx.openSetting

      // 打開配置,手動授權。
      // wx.openSetting({})
      

獲取用戶位置

  • wxml

    <view bindtap="getLocalPath">{{localPath}}</view>
    
  • js

      data: {
          localPath:"請選擇位置",
      },
      getLocalPath:function(){
        var that = this;
        wx.chooseLocation({
          success: function(res) {
            that.setData({localPath:res.address});
          },
        })
      },
    

for指令

  • wxml

    <!--pages/goods/goods.wxml-->
    <text>商品列表</text>
    <view>
      <view wx:for="{{dataList}}" >{{index}} -  {{item}}</view>
      <view wx:for="{{dataList}}" wx:for-index="idx" wx:for-item="x">{{idx}} -  {{x}}</view>
    </view>
    <view>
      {{userInfo.name}}
      {{userInfo.age}}
    </view>
    <view>
      <view wx:for="{{userInfo}}">{{index}} - {{item}}</view>
    </view>
    
    
  • js

      data: {
        dataList:["白浩為","海狗","常鑫"],
        userInfo:{
          name:"alex",
          age:18
        }
      },
    

獲取圖片

  • wxml

    <!--pages/publish/publish.wxml-->
    <view bindtap="uploadImage">請上傳圖片</view>
    <view class="container">
      <image wx:for="{{imageList}}" src="{{item}}"></image>
    </view>
    
    
  • js

      data: {
        imageList: ["/static/hg.jpg", "/static/hg.jpg"]
      },
    
      uploadImage:function(){
        var that = this;
    
        wx.chooseImage({
          count:9, //圖片最多的個數
          sizeType: ['original', 'compressed'], // 圖片大小
          sourceType: ['album', 'camera'], //圖片的來源,相機或者本地
          success:function(res){
            // 設置imageList,頁面上圖片自動修改。
            // that.setData({
            //   imageList: res.tempFilePaths
            // });
    
            // 預設圖片 + 選擇的圖片; 
            that.setData({
              imageList: that.data.imageList.concat(res.tempFilePaths) //concat方法拼接兩個列表
            });
          }
        });
      },
    

註意:圖片目前只是上傳到了記憶體。


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

-Advertisement-
Play Games
更多相關文章
  • 在學習 jsp 的過程中,使用 IDEA 軟體新建 web 文件,右擊新建 jsp 時,沒有找到 jsp 文件。可能是沒有添加 web 路徑,該如何解決呢? ...
  • 作者:倪新明 ADR是一種性價比非常高的架構決策文檔化實踐,團隊引入和實踐成本很低,卻能為團隊帶來極大收益! 1 團隊研發麵臨的問題 不論是在傳統的IT行業,還是互聯網行業,研發團隊在架構決策層面或多或少的都會面臨以下問題或挑戰: •新成員加入團隊,對系統現有的架構決策可能會盲目遵守,只知其然,不知 ...
  • 1、設計想法 原理與之前的串口發送模塊一樣,1位的數據位和8位的數據位再加上1位的停止位。唯一不同的是在接收的時候要考慮到有干擾的情況下,為了避免干擾,我們對每位數據進行多次採樣,按出現概率大的值為該數據位的值。 如果按照通常想法在每bits位中間取值的話,bit3位出現圖中的干擾很有可能會讀出錯誤 ...
  • 家居網購項目實現02 5.功能04-會員登錄 5.1需求分析/圖解 需求如圖: 輸入用戶名、密碼後提交 判斷該用戶是否存在 如果存在,顯示登錄成功頁面 否則返回登錄頁面,要求重新登錄 要求改進登錄密碼為md5加密 5.2思路分析 5.3代碼實現 根據上述分析圖,在對應的層添加方法 5.3.1dao層 ...
  • unique_ptr的成員函數在上一篇博客中幾乎全部涵蓋,其實還有一個很有踢掉,即std::unique_ptr::get_deleter字面已經很明顯了,就獲得deleter 智能指針採通過引用計數我們能解決多次釋放同一塊記憶體空間的問題,並且和之間直接移交管理權的方式比較這種方式更加靈活安全。 但 ...
  • 怎麼引入不同的庫? 線上安裝庫 1)pip install 模塊名 2)國內源: 清華:https://pypi.tuna.tsinghua.edu.cn/simple 阿裡雲:http://mirrors.aliyun.com/pypi/simple/ 中國科技大學 https://pypi.mi ...
  • 1.函數 #函數語法: #函數名規範:小謝字母開頭,不同字母下劃線隔開(字母數字下劃線) #def 函數名(): #函數體:希望函數做的事情 1.1.無參函數 #無參函數 def music(): print("唱著又沒動聽的歌聲...") #調用函數 music() 1.2.有參函數 #有參函數 ...
  • 1 鎖優化歷史 synchronized 從 JDK1.0到JDK1.5 ,效率低 JDK1.5到JDK1.6,JVM團隊對synchronized進行深度優化,加入了:適應性自旋、鎖消除、鎖膨脹、輕量級鎖、偏向鎖 等優化技術 JDK1.5 開始,加入java.util.concurrent,提供A ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...