知識(shí)
不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產(chǎn)生價(jià)值,我們?cè)谧非笃湟曈X(jué)表現(xiàn)的同時(shí),更側(cè)重于功能的便捷,營(yíng)銷的便利,運(yùn)營(yíng)的高效,讓網(wǎng)站成為營(yíng)銷工具,讓軟件能切實(shí)提升企業(yè)內(nèi)部管理水平和效率。優(yōu)秀的程序?yàn)楹笃谏?jí)提供便捷的支持!
您當(dāng)前位置>首頁(yè) » 新聞資訊 » 小程序相關(guān) >
微信小程序中observer的詳解
發(fā)表時(shí)間:2020-9-29
發(fā)布人:葵宇科技
瀏覽次數(shù):168
概述
observer 用于監(jiān)聽(tīng)和響應(yīng)任何屬性和數(shù)據(jù)字段的變化。可以同時(shí)監(jiān)聽(tīng)多個(gè)。一次 setData 最多觸發(fā)每個(gè)監(jiān)聽(tīng)器一次。同時(shí)也可以監(jiān)聽(tīng)子數(shù)據(jù)字段
效果
父組件WXML
<view class="container">
<view class="title">Observer數(shù)據(jù)監(jiān)聽(tīng)器</view>
<view>父組件向子組件傳值</view>
<input class="inp" bindinput='bindInputVal' placeholder="請(qǐng)輸入傳入num的值"></input>
<view>更改姓名</view>
<input class="inp" bindinput='bindInputName' placeholder="請(qǐng)輸入需要更改的姓名"></input>
<observer num="{{num}}" person="{{person}}"></observer>
</view>
父組件JS
//獲取應(yīng)用實(shí)例
const app = getApp()
Page({
data: {
num: null,
person: {
name: '秋天的第一口西北風(fēng)',
age: 20,
sex: '男',
subject: [
{ id: 1, title: '語(yǔ)文', score: 81 },
{ id: 2, title: '數(shù)學(xué)', score: 92 },
{ id: 3, title: '英語(yǔ)', score: 76 }
]
}
},
// 獲取 num 的值
bindInputVal(e) {
this.setData({
num: e.detail.value
})
},
// 修改姓名
bindInputName(e) {
this.setData({
'person.name': e.detail.value
})
}
})
子組件WXML
<view class="container">
<view class="item">
<view class="cont">
<view>父組件傳入的num值</view>
<view style="font-size:26rpx;margin: 10rpx 0 0 30rpx;">改變后的num值: {{num}}</view>
</view>
<view class="cont">
<view>父組件傳入的person對(duì)象</view>
<view style="font-size:26rpx;margin: 10rpx 0 0 30rpx;">
姓名: {{person.name || '暫無(wú)'}},年齡:{{person.age || 0}},性別:{{person.sex || '男'}}
</view>
</view>
<view class="cont">
<view>子組件中單個(gè)數(shù)據(jù)監(jiān)聽(tīng)</view>
<input class="inp" bindinput='bindInputVal' placeholder="請(qǐng)輸入aloneVal的值"/>
<view style="font-size:26rpx;margin: 10rpx 0 0 30rpx;">改變后的aloneVal值:{{aloneVal}}</view>
</view>
<view class="cont">
<view>子組件中多個(gè)數(shù)據(jù)監(jiān)聽(tīng)</view>
<input class="inp" bindinput='bindInputOneVal' placeholder="請(qǐng)輸入oneVal的值"/>
<input class="inp" bindinput='bindInputTwoVal' placeholder="請(qǐng)輸入twoVal的值"/>
</view>
</view>
</view>
子組件JS
子組件接收的屬性的值如果為 null, undefined, ‘ ’,properties 的 observer 監(jiān)聽(tīng)不到
Component({
properties:{
num: {
type: String,
observer: function(newVal, oldVal) {
console.log('properties-num', newVal)
}
},
person: {
type: Object,
observer: function(newVal, oldVal) {
console.log('properties-person', newVal)
}
}
},
data: {
aloneVal: 0,
>: null,
twoVal: null
},
observers: {
// 監(jiān)聽(tīng)全部 setData,每次 setData 都觸發(fā),一般用不到 '**' 監(jiān)聽(tīng)全部
'**' (val) {
console.log('**所有的setData變化:', val) // 此時(shí)返回的 val 值是一個(gè)包含所有data變量的對(duì)象
},
// 監(jiān)聽(tīng) properties 接收的值的變化
'num' (val) {
console.log('observers-num', val)
},
// 監(jiān)聽(tīng)對(duì)象
'person' (val) {
console.log('observers-person', val)
},
// 監(jiān)聽(tīng)對(duì)象的屬性
'person.name' (val) {
console.log('observers-person.name', val)
},
// 監(jiān)聽(tīng)子組件中單個(gè)數(shù)據(jù)的變化
'aloneVal' (val) {
console.log('aloneVal', val)
},
// 監(jiān)聽(tīng)子組件中多個(gè)數(shù)據(jù)的變化
'oneVal, twoVal' (val1, val2) {
console.log('oneVal', val1)
console.log('twoVal', val2)
}
},
// 在組件在視圖層布局完成后執(zhí)行
ready: function() {
},
methods: {
bindInputVal(e) {
this.setData({
aloneVal: e.detail.value
})
},
// 獲取>bindInputOneVal(e) {
this.setData({
>: e.detail.value
})
},
// 獲取 twoVal 的值
bindInputTwoVal(e) {
this.setData({
twoVal: e.detail.value
})
}
}
})
子組件WXSS
.container {
width: 100%;
}
.item {
width: 100%;
margin-top: 10rpx;
}
.cont {
width: 100%;
padding: 10rpx 30rpx;
box-sizing: border-box;
}
.cont .inp {
margin-top: 10rpx;
border: 1rpx solid #acacac;
border-radius: 30rpx;
padding: 6rpx 32rpx;
}
相關(guān)案例查看更多
相關(guān)閱讀
- 云南軟件設(shè)計(jì)
- asp網(wǎng)站
- 文山小程序開(kāi)發(fā)
- 云南小程序開(kāi)發(fā)費(fèi)用
- 云南小程序開(kāi)發(fā)制作公司
- 昆明網(wǎng)絡(luò)公司
- SEO
- 小程序
- 網(wǎng)站建設(shè)
- 區(qū)塊鏈
- 江蘇小程序開(kāi)發(fā)
- 云南網(wǎng)站建設(shè)首選
- 云南網(wǎng)站建設(shè)費(fèi)用
- 汽車報(bào)廢回收
- 保險(xiǎn)網(wǎng)站建設(shè)公司
- 網(wǎng)站建設(shè)優(yōu)化
- 汽車報(bào)廢軟件
- 昆明做網(wǎng)站
- uniapp開(kāi)發(fā)小程序
- 報(bào)廢車拆解管理系統(tǒng)
- 網(wǎng)站開(kāi)發(fā)哪家好
- 微信分銷
- 云南小程序定制
- 昆明小程序開(kāi)發(fā)聯(lián)系方式
- 云南小程序開(kāi)發(fā)制作
- 云南衛(wèi)視小程序
- Web開(kāi)發(fā)框架
- 汽車報(bào)廢管理
- 小程序制作
- 云南網(wǎng)站建設(shè)百度官方