日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

微信小程序頁面?zhèn)髦怠⒔M件間通信總結(jié)

 

小程序是一種新的開放能力,開發(fā)者可以快速地開發(fā)一個小程序。小程序可以在微信內(nèi)被便

捷地獲取和傳播,同時具有出色的使用體驗。對于微信小程序,前端開發(fā)應(yīng)該不陌生,目前也

是非常火,很多公司都會進行開發(fā)。對于小程序的優(yōu)點我就不到這過多描述了,今天我是想來

總結(jié)下微信小程序頁面和組件傳值。

微信小程序頁面?zhèn)髦怠⒔M件間通信總結(jié)

微信小程序目錄結(jié)構(gòu)

1.頁面與頁面?zhèn)髦?跳轉(zhuǎn)的url帶參傳值

微信小程序頁面直接傳值我們經(jīng)常用到的是頁面URL跳轉(zhuǎn)傳值,跳轉(zhuǎn)到的頁面通過到生命周

onLoad里面接收。

//A頁面
Page({
 
 data:{
 
 },
 linkTo:function(){//頁面事件綁定方法
 
 let data = 'hello world';
 wx.navigateTo({
 url: '/pages/my/index?name=' + data,
 })
 
 }
 })
//B頁面
 Page({
 
 data:{
 name:' '
 },
 onLoad:function(option){//接收數(shù)據(jù)
 
 this.setData({
 name: option.name
 })
 }
 })
如果頁面有多個值要傳,直接用&符合鏈接起來就可以了。
比如'/pages/my/index?name=' + data1+'&number='+data2;

2.頁面與頁面?zhèn)髦?全局globalData傳值

//App.js
App({
 onLaunch (options) {
 // Do something initial when launch.
 },
 onShow (options) {
 // Do something when show.
 },
 onHide () {
 // Do something when hide.
 },
 onError (msg) {
 console.log(msg)
 },
 globalData: {
 
 name:'hello world'
 
 }
})
//A頁面
const app = getApp();//獲取全局對象
Page({
 
 data:{
 
 },
 onLoad:function(){
 let name = app.globalData.name;
 console.log(name);//hello world
 }
 })

全局數(shù)據(jù)的拿去是通過拿去globalData對象,再到其他頁面獲取,當(dāng)然你也可以

修改全局對象里面數(shù)據(jù)其他頁面從新去獲取。

//A頁面
const app = getApp();//獲取全局對象
Page({
 
 data:{
 
 },
 onLoad:function(){
 app.globalData.name='微信小程序'; //修改全局數(shù)據(jù)
 
 }
 })
//B頁面
const app = getApp();//獲取全局對象
Page({
 
 data:{
 
 },
 onLoad:function(){
 let name = app.globalData.name;
 console.log(name);//微信小程序
 
 }
 })

2.頁面與頁面?zhèn)髦?頁面數(shù)據(jù)緩存wx.setStorageSync(KEY,DATA)

//A頁面
Page({
 
 data:{
 
 },
 onLoad:function(){
 wx.setStorage({
 key:"name",
 data:"hello world"
 })
 
 
 }
 })
 //B頁面
 
 Page({
 
 data:{
 
 },
 onLoad:function(){
 var value = wx.getStorageSync('name');
 
 console.log(value);// hello world
 }
 })
 此處緩存數(shù)據(jù)要用同步wx.setStorageSync(),因為異步有可能數(shù)據(jù)或者有可能會獲取不到
 
 

下面我們來說說 微信小程序組件之前傳值

組件間通信

組件間的基本通信方式有以下幾種。

  • WXML 數(shù)據(jù)綁定:用于父組件向子組件的指定屬性設(shè)置數(shù)據(jù),僅能設(shè)置 JSON 兼容數(shù)據(jù)
  • (自基礎(chǔ)庫版本 2.0.9 開始,還可以在數(shù)據(jù)中包含函數(shù))。具體在 組件模板和樣式 章節(jié)中介紹。
  • 事件:用于子組件向父組件傳遞數(shù)據(jù),可以傳遞任意數(shù)據(jù)。
  • 如果以上兩種方式不足以滿足需要,父組件還可以通過 this.selectComponent 方法獲取子組件實例對象,這樣就可以直接訪問組件的任意數(shù)據(jù)和方法。

說到組件,這里我們先了解組件的使用,組件的js、json文件和頁面不一樣。

 Component構(gòu)造器

Component({
 behaviors: [],
 properties: {
 myProperty: { // 屬性名
 type: String,
 value: ''
 },
 myProperty2: String // 簡化的定義方式
 },
 
 data: {}, // 私有數(shù)據(jù),可用于模板渲染
 lifetimes: {
 // 生命周期函數(shù),可以為函數(shù),或一個在methods段中定義的方法名
 attached: function () { },
 moved: function () { },
 detached: function () { },
 },
 // 生命周期函數(shù),可以為函數(shù),或一個在methods段中定義的方法名
 attached: function () { }, // 此處attached的聲明會被lifetimes字段中的聲明覆蓋
 ready: function() { },
 pageLifetimes: {
 // 組件所在頁面的生命周期函數(shù)
 show: function () { },
 hide: function () { },
 resize: function () { },
 },
 methods: {
 onMyButtonTap: function(){
 this.setData({
 // 更新屬性和數(shù)據(jù)的方法與更新頁面數(shù)據(jù)的方法類似
 })
 },
 // 內(nèi)部方法建議以下劃線開頭
 _myPrivateMethod: function(){
 // 這里將 data.A[0].B 設(shè)為 'myPrivateData'
 this.setData({
 'A[0].B': 'myPrivateData'
 })
 },
 _propertyChange: function(newVal, oldVal) {
 }
 }
})

使用 Component 構(gòu)造器構(gòu)造頁面

{
 "component": true,//這里是它把定義成組件,要不然引入到頁面會報錯
}

引入組件

//A頁面 json 

{
 "usingComponents": {
 "myComponents": "../../components/myComponents/index",//引入組件
 },
}

//A頁面 WXML

<myComponent name="hello world"></myComponent>

//myComponent接收數(shù)據(jù)

Component({
 properties: {
 name:{
 value: "",
 type: String //此處設(shè)置數(shù)據(jù)類型 這樣 組件就能接收到數(shù)據(jù)
 }
 },
 methods: {
 
 }
 })

 

組件間通信與事件

監(jiān)聽事件

事件系統(tǒng)是組件間通信的主要方式之一。自定義組件可以觸發(fā)任意的事件,引用組件的頁面可以監(jiān)聽這些事件。監(jiān)聽自定義組件事件的方法與監(jiān)聽基礎(chǔ)組件事件的方法完全一致:

<!-- 當(dāng)自定義組件觸發(fā)“myevent”事件時,調(diào)用“onMyEvent”方法 -->

<myComponent bindmyevent="onMyEvent"></myComponent>

<!-- 或者可以寫成 -->
<myComponent bind:myevent="onMyEvent"></myComponent>

Page({
 onMyEvent: function(e){
 e.detail // 自定義組件觸發(fā)事件時提供的detail對象
 }
})

觸發(fā)事件

自定義組件觸發(fā)事件時,需要使用 triggerEvent 方法,指定事件名、detail對象和事件選項

<!-- 在自定義myComponent組件中 -->
<button bindtap="onTap">點擊這個按鈕將觸發(fā)“myevent”事件</button>

Component({
 properties: {},
 methods: {
 onTap: function(){
 var myEventDetail = {} // detail對象,提供給事件監(jiān)聽函數(shù)
 var myEventOption = {} // 觸發(fā)事件的選項
 this.triggerEvent('myevent', myEventDetail, myEventOption)
 }
 }
})

分享到:
標簽:程序 微信小
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運動步數(shù)有氧達人2018-06-03

記錄運動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定