问题说明:
有两个页面需要用到城市选择,假设为A和B页面,城市数据放在单独的一个js文件内,导入页面。
A页面使用的是原数据,一切正常,变量名为:user_city_option
B页面是筛选地区数据,但是某些地区没有数据,所以需要扩大筛选范围,所以需要在每个城市节点之前增加不限制选项,变量名为:user_city_option
onReady: function(){
console.log(JSON.stringify(city_area))
//生成不限制地区选项
let user_city_option = city_area;
for (let c in user_city_option) {
let city_list = user_city_option[c].children;
for (let a in city_list) {
let area_list = city_list[a].children;
//某些城市没有地区
if (area_list == null) continue;
city_list[a].children.unshift({value: 0, text: '不限制'});
}
//防止某些省份没有城市
if (city_list == null) continue;
city_list.unshift({value: 0, text: '不限制'});
user_city_option[c].children = city_list;
}
user_city_option.unshift({value: 0, text: '不限制'});
this.user_city_option = user_city_option;
}
数据格式样式
[{
"value":"110000",
"text":"北京市",
"children":[{
"value":"110100",
"text":"北京市",
"children":[{
"value":"110101",
"text":"东城区"
},{
"value":"110102",
"text":"西城区"
},{
"value":"110105",
"text":"朝阳区"
}]
}]
从上图可以看到,变量在页面关闭后没有被销毁,而且其他页面同样变量的数据还被感染了
页面渲染后有一个打印城市地区数据的,也可以证明,第一次打开页面打印的是原数据,第二次打开的时候,还未执行到添加数据,打印结果上面还是存在上一次添加的数据
{"value":0,"text":"不限制"},{"value":"110000","text":"北京市","children":[{"value":0,"text":"不限制"}
正常情况不是页面关闭后变量都被销毁了吗?难道我理解姿势不对?还是框架有点小bug呢?