wx:for中的数组使用unshift,自定义组件的lifetimes出现bug
自定义组件中:
lifetimes: { // 生命周期函数,可以为函数,或一个在methods段中定义的方法名 attached: function () { console.log( this .properties.name) }, }, |
wxml中
< shop-item wx:for = "{{arr}}" wx:key = "item" name = "{{item.name}}" ></ shop-item > |
js中是数据
arr: [ { id: 1, name: 11, price: 111, num: 1111 }, { id: 21, name: 211, price: 2111, num: 21111 }, ] |
页面一开始会log出来 11, 和 211
这个时候
在js里面输入
var l = this .data.arr; l.unshift({ id: 3, name: 3, price: 33, num: 3 }) this .setData({ arr: l }) |
预期结果是log出 一个 3, 但是 它却log出来211, 也就是没有让新加的元素初始化,而是让数组的最后一个又初始化了一遍
2 回复
可以是可以,但是我实际的情况比这个要复杂.
我的结构是这样的.
js数据:
arr: { _list: [1, 21], // 我wx:for 就是循环这个_list, 是number型的数组 "1" : { id: 1, name: 11, price: 111, num: 1111 }, "21" : { id: 21, name: 211, price: 2111, num: 21111 }, } |
xml这样写
< shop-item wx:for = "{{arr._list}}" wx:key = "item" name = "{{arr[item].name}}" ></ shop-item > |
页面一开始会log出来 11, 和 211
然后执行 一段js代码
var l = this .data.arr; l._list.unshift(3) var o = { id: 3, name: 3, price: 33, num: 3 }; l[o.id] = o; this .setData({ arr: l }) |
预期结果是log出 一个 3, 但是 它却log出来211, 也就是没有让新加的元素初始化,而是让数组的最后一个又初始化了一遍
如果重新加载这个页面 是没问题的