数据监听器
Component({
/**
* 组件的属性列表
*/
properties: {
playlist: {
type: Object
}
},
// 数据监听器
observers: {
'playlist.playCount'(count) {
console.log(count)
// console.log(this._tranNumber(count,2))
this.setData({
_count:this._tranNumber(count,2)
})
}
},
/**
* 组件的初始数据
*/
data: {
_count : 0
},
/**
* 组件的方法列表
*/
methods: {
// 处理播放量 第一个值为处理的数值,第二项为保留小数位数
_tranNumber(num,point){
let numStr = num.toString().split('.')[0] //舍去小数点
if (numStr.length < 6){//小于10万直接返回数值
return numStr
}
// 大于10万小于千万
else if (numStr.length >= 6 && numStr.length <= 8) {
// 截取出小数点位
let decimal = numStr.substring(numStr.length - 4, numStr.length - 4 + point)
return parseFloat(parseInt(num/10000) + '.' + decimal)+ "万"
}
// 大于千万
else if (numStr.length > 8){
// 截取出小数点位
let decimal = numStr.substring(numStr.length - 8,numStr.length - 8 + point)
return parseFloat(parseInt(num / 100000000) + '.' + decimal)+ "亿"
}
}
}
})
要点
可以监听当前组件中任何一个值的变化,如果监听的是对象下的属性值要使用引号:如
'numberA, numberB': function(numberA, numberB){}'playlist.playCount'(count) {}
给数据赋值时,一定不能给监听数据本身赋值(会触发死循环)如:
observers: {
'playlist.playCount'(count) {
console.log(count)
// console.log(this._tranNumber(count,2))
this.setData({
//错误写法-死循环
//playlist.playCount:this._tranNumber(count,2)
//正确写法—给新变量赋值
_count:this._tranNumber(count,2)
})
}
},
/**
* 组件的初始数据
*/
data: {
_count : 0
},