收藏
回答

组件里 properties的值我不能拿来在 ready初始化? 那我假设有多个数据合并处理呢?

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug Component properties lifetimes ready 微信iOS客户端 所有版本 所有版本


const app = getApp()

const url = app.globalData.url

Component({

  properties: {

    staff_see_id:{

      type: Array,  

      value: '' ,

      observers:function(newvlaue){

        console.log('newvlaue1',newvlaue)

      }

    },

    people_list:{

      type: Array,  

      value: '' ,

      observers:function(newvlaue){

        console.log('newvlaue2',newvlaue)

      }

    },

  },

  lifetimes:{

    ready(){ 

      const clonedata = this.data

      console.log('3333333333',clonedata)

      // console.log('jinlai进来了',this.properties.people_list,this.properties.staff_see_id);

      let listnew = [],staff_see_id_list=[]

      clonedata.il.map(item=>{

        listnew.push(item.name)

      })

      console.log(1111,listnew)

      if (clonedata.is){

        clonedata.is.map(item=>{

          for(let i in clonedata.il){

            if(clonedata.il[i].id == item){

              staff_see_id_list.push(Number(i))

              break;

            }

          } 

        }

      } 

      this.setData({

        list:listnew,

        value:staff_see_id_list

      })

       console.log('组件里的list',this.data.list,this.data.staff_see_id);

       

    }

  },

  options: {

    styleIsolation: 'apply-shared',

  },

  data: {

    show:false,

    // list:['王子豪','张卫健','安心','寄','坤'],

    list:[],

    // 选中的结果值

    value: [],

    oldvalue:[],

    searchvalue: '',

    style:'background:#f5f5f5;font-size:28rpx;padding:22rpx 30rpx',

    il : [],

    is : []

  },

  observers:{

    'value':function(new1,old1){

      console.log('value的值发生了变化',new1,this.properties.people_list);

      let people = []

      new1.map(item =>{ 

        people.push(this.properties.people_list[item].id)

      })

      this.triggerEvent('SelectPeople', {value: people}, {});

    },

    // 'people_list':function(newVal, oldVal) {  

    //   // 当myValue变化时,这个函数会被调用  

    //   console.log('people_list changed from', oldVal, 'to', newVal);  

    //   this.setData({

    //     il:newVal

    //   })


    //   let aaaa = []

    //  let aaa =   newVal.map(item=>{

    //   aaaa.push(item.name)

    //   })

    //   console.log('aaa111',aaa)


    //   this.setData({

    //     list:aaa,

    //     // value:staff_see_id_list

    //   })

    //   console.log('111',this.data.list)


    //   // 基于newVal做一些操作  

    // },

    // 'staff_see_id':function(newVal, oldVal) {  

    //   // 当myValue变化时,这个函数会被调用  

    //   console.log('staff_see_id changed from', oldVal, 'to', newVal);  

    //   // 基于newVal做一些操作  

    //   this.setData({

    //     is:newVal

    //   })




    // }  

  },

  methods: {

    onChangeSearch(){

      const list = this.data.value

      console.log('news',list);

      this.setData({

        oldvalue:list

      })

    },

    Changeshow(){

      this.setData({

        show:!this.data.show

      })

    },

    onDeletePeople(e){

      let nameind = e.currentTarget.dataset.item

      let newvalue = this.data.value

      // console.log('删除',newvalue,ind);

      for(let i=0;i<newvalue.length;i++){

        if(newvalue[i== nameind){

          newvalue.splice(i,1)

          break

        }

      }

      this.setData({

        value:newvalue

      })

    },

    onChange(e) {

      // console.log('e',e);

      if(this.data.searchvalue == ''){

        this.setData({ value: e.detail.value });

      }else{

        let listnew = JSON.parse(JSON.stringify(this.data.oldvalue))

        //  console.log('list oldvalue2',this.data.list,this.data.oldvalue);

         this.data.oldvalue.map((item,index)=>{

            if(this.data.people_list[item].name.indexOf(this.data.searchvalue!== -1){

              console.log('排除出去的',this.data.people_list[item],listnew,index);

              listnew.splice(index,1)

            }

         })

        //  console.log('listnew',listnew);

        const searcglist = e.detail.value

        searcglist.map(item=>{

          listnew.push(item)

        })

       

        this.setData({ value: listnew });

      }

    }, 

    onAll(){

      console.log('this.list ',this.data.value);

      let all = []

      this.data.list.map((item,index)=>{

        all.push(index)

      })

      this.setData({value: all})

    },

    onClear(){

      console.log('清空');

      this.setData({value: []})

    }

  },

})



回答关注问题邀请回答
收藏

2 个回答

  • demon
    demon
    04-28

    开发者管理员呢,出来回复啊,多久的问题了,还没解决,是不是就是承认比阿里系的差劲啊,除了你们审核微信小程序的审核人员有效率外,你们这些框架开发者是不是太差劲了?

    04-28
    有用 1
    回复
  • showms
    showms
    04-28

    可以在ready里面用,你现在是什么问题

    04-28
    有用
    回复 3
    • demon
      demon
      05-07
      我需要穿进去数据再初始化,现在强行在所谓的 observers 弄好了。但是现在又碰到了一个问题 就是  我是点击编辑弹窗弹出了这个组件,然后吧数据请求过来,再setdata到这个组件,就死循环了。这怎么办。就不就是一个坑嘛,。解决了前面一个问题,后面的问题又来了
      05-07
      回复
    • showms
      showms
      05-07回复demon
      在observers里面比对一下数据是否变化,没变化不处理?
      05-07
      回复
    • demon
      demon
      05-07回复showms
      已经解决了,是其它问题。感谢回复
      05-07
      回复
登录 后发表内容