您现在的位置: 首页 > 微信小程序开发 > 文档 >

问答《四十六》数据渲染的问题+微信封装问题

来源:微信小程序 编辑:Yiyongtong.com 发布时间:2017-11-23 17:32热度:

1、关于微信小程序数据渲染的问题问:我想用一个方法来过滤type中的数据,但是在小程序中好像不能这么用 不知道有没有遇到过相同问题的同学(不知道微信小程序有没有类似angular类似filter的过滤方法=-=)Luochengor ...

 
 
 
1、关于微信小程序数据渲染的问题
 

问:我想用一个方法来过滤type中的数据,但是在小程序中好像不能这么用 不知道有没有遇到过相同问题的同学(不知道微信小程序有没有类似angular类似filter的过滤方法=-=)

 

Luochengor答

1、将显示的数据和完整的数据分开定义,在获取到数据后就进行过滤,过滤后把要显示的数据进行setData
2、如果是简单的过滤,页面也支持 if 判断的,不过这样会导致页面上节点过多

3、通过样式来过滤,可以根据type的字段来选择对应的class(即样式是否为display:none;)如:可以在tpye中定义一个hide字段,当hide为true时隐藏,当hide为false时,显示,这种方式比较适合数据量较大(显示层数据和完整数据分开定义会占用过多的内存,而且对较大的显示数据进行setData性能也比较差),并且只是展现不做其他业务处理的情况

总体来说,还是建议使用第一种方式

 

2、为什么一个类没有定义login方法和getUserInfo方法却还能调用?

 

在WxService中有如下语句:

class Service {
    ....没有找到login和getUserInfo的定义
    }
export default Service

在app.js中有如下语句:

import WxService from 'helpers/WxService'
APP({
    WxService: new WxService,
    getUserInfo() {
        return this.WxService.login()
        .then(data => {
            console.log(data)
            return this.WxService.getUserInfo()
        })
        .then(data => {
            console.log(data)
            this.globalData.userInfo = data.userInfo
            return this.globalData.userInfo
        })
    },
})

为什么可以执行this.WxService.login()和this.WxService.getUserInfo()?

ackHuang答

this.WxService是微信封装的对象,对外是隐藏的。
https://mp.weixin.qq.com/debu...

 
wx.getUserInfo({
  success: function(res) {
    var userInfo = res.userInfo
    var nickName = userInfo.nickName
    var avatarUrl = userInfo.avatarUrl
    var gender = userInfo.gender //性别 0:未知、1:男、2:女
    var province = userInfo.province
    var city = userInfo.city
    var country = userInfo.country
  }
})