日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
創(chuàng)新互聯(lián)百度小程序教程:數(shù)據(jù)監(jiān)聽器
  • 數(shù)據(jù)監(jiān)聽器
    • 使用數(shù)據(jù)監(jiān)聽器
    • 監(jiān)聽字段語法
      • Bugs & Tips

    數(shù)據(jù)監(jiān)聽器

    數(shù)據(jù)監(jiān)聽器可以用于監(jiān)聽和響應(yīng)任何屬性和數(shù)據(jù)字段的變化。數(shù)據(jù)監(jiān)聽器自小程序基礎(chǔ)庫版本 3.105.9 開始支持。

    我們提供的服務(wù)有:網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、棗莊ssl等。為1000多家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的棗莊網(wǎng)站制作公司

    使用數(shù)據(jù)監(jiān)聽器

    有時(shí),需要組合監(jiān)聽一些數(shù)據(jù)字段。

    例如,this.data.sum永遠(yuǎn)是 this.data.numberAthis.data.numberB的和。此時(shí),可以使用數(shù)據(jù)監(jiān)聽器進(jìn)行如下實(shí)現(xiàn)。

    代碼示例

    在開發(fā)者工具中預(yù)覽效果

    • JS
     
     
     
    1. Component({
    2. properties: {
    3. numberA: {
    4. type: Number,
    5. value: 0
    6. },
    7. numberB: {
    8. type: Number,
    9. value: 0
    10. }
    11. },
    12. attached: function() {
    13. this.setData({
    14. numberA: 1,
    15. numberB: 2
    16. })
    17. },
    18. observers: {
    19. 'numberA, numberB': function (numberA, numberB) {
    20. // 在 numberA 或者 numberB 被設(shè)置時(shí),執(zhí)行這個(gè)函數(shù)
    21. this.setData({
    22. sum: numberA + numberB
    23. })
    24. }
    25. }
    26. });

    監(jiān)聽字段語法

    數(shù)據(jù)監(jiān)聽器支持監(jiān)聽屬性或內(nèi)部數(shù)據(jù)的變化,可以同時(shí)監(jiān)聽多個(gè)。一次setData最多觸發(fā)每個(gè)監(jiān)聽器一次。

    同時(shí),監(jiān)聽器可以監(jiān)聽子數(shù)據(jù)字段,如下例所示。

    代碼示例

    • JS
     
     
     
    1. Component({
    2. observers: {
    3. 'some.subfield': function(subfield) {
    4. // 使用 setData 設(shè)置 this.data.some.subfield 時(shí)觸發(fā)
    5. // (除此以外,使用 setData 設(shè)置 this.data.some 也會(huì)觸發(fā))
    6. subfield === this.data.some.subfield
    7. },
    8. 'arr[12]': function(arr12) {
    9. // 使用 setData 設(shè)置 this.data.arr[12] 時(shí)觸發(fā)
    10. // (除此以外,使用 setData 設(shè)置 this.data.arr 也會(huì)觸發(fā))
    11. arr12 === this.data.arr[12]
    12. },
    13. }
    14. });

    如果需要監(jiān)聽所有子數(shù)據(jù)字段的變化,可以使用通配符**。

    • JS
     
     
     
    1. Component({
    2. observers: {
    3. 'some.field.**': function(field) {
    4. // 使用 setData 設(shè)置 this.data.some.field 本身或其下任何子數(shù)據(jù)字段時(shí)觸發(fā)
    5. // (除此以外,使用 setData 設(shè)置 this.data.some 也會(huì)觸發(fā))
    6. field === this.data.some.field
    7. },
    8. },
    9. data: {
    10. some: {
    11. field: {
    12. subfield: [1, 2, 3]
    13. }
    14. }
    15. },
    16. attached: function() {
    17. // 會(huì)觸發(fā) observers
    18. this.setData({
    19. 'some.field': {}
    20. });
    21. // 會(huì)觸發(fā) observers
    22. // this.setData({
    23. // 'some.field.xxx': {}
    24. // });
    25. // 會(huì)觸發(fā) observers
    26. // this.setData({
    27. // 'some': {}
    28. // });
    29. }
    30. });

    特別地,僅使用通配符**可以監(jiān)聽全部setData。

    • JS
     
     
     
    1. Component({
    2. observers: {
    3. '**': function(value) {
    4. // 數(shù)據(jù)發(fā)生變化即觸發(fā),這里的 value 是 properties 和 data 的合集
    5. }
    6. }
    7. })

    Bugs & Tips

    • 數(shù)據(jù)監(jiān)聽器監(jiān)聽的是setData中涉及的數(shù)據(jù)字段,并且只有這些字段發(fā)生改變時(shí)才會(huì)觸發(fā),類似observer;
    • 在數(shù)據(jù)監(jiān)聽器中再次進(jìn)行setData設(shè)置被監(jiān)聽的字段,可能會(huì)造成循環(huán)監(jiān)聽,請(qǐng)注意使用;
    • 由于小程序?qū)?code>setData進(jìn)行了優(yōu)化操作,所以如果同步的多次設(shè)置setData那么實(shí)際上只會(huì)執(zhí)行最后一次setData引起的observers

    代碼示例

    • JS
     
     
     
    1. Component({
    2. properties: {
    3. numberA: {
    4. type: Number,
    5. value: 0
    6. },
    7. numberB: {
    8. type: Number,
    9. value: 0
    10. }
    11. },
    12. attached: function() {
    13. this.setData({
    14. numberA: 1,
    15. numberB: 2
    16. });
    17. this.setData({
    18. numberA: 2,
    19. numberB: 3
    20. })
    21. },
    22. observers: {
    23. 'numberA, numberB': function (numberA, numberB) {
    24. // 在 numberA 或者 numberB 被設(shè)置時(shí),執(zhí)行這個(gè)函數(shù)
    25. this.setData({
    26. sum: numberA + numberB
    27. })
    28. }
    29. }
    30. });

    以上只會(huì)執(zhí)行一次observers。


    當(dāng)前名稱:創(chuàng)新互聯(lián)百度小程序教程:數(shù)據(jù)監(jiān)聽器
    當(dāng)前網(wǎng)址:http://m.5511xx.com/article/dhpegpp.html