急急急
我在component构造器的properties里编写属性被改变时调用的observer函数,出现了以下严重的错误
VM43:1 [Exparser] [Error] [Component] Error Listener Error @ #(anonymous)
并导致控制台直接失去连接。
错误指向我的observer里的setData;代码如下:
if (nv!=ov){ var imgs = nv, images = [], rs = [[], [], []], r_state = [[], [], []]; for ( var x in imgs) { var p1 = Math.floor(x / 4); rs[p1][x % 4] = imgs[x]; r_state[p1][x % 4] = 2; images.push(imgs[x].substring(imgs[x].indexOf( '/images/' ))); } var len = imgs.length, p1 = Math.floor(len / 4); if (len < 9) rs[p1][len % 4] = "/images/addImage.png" ; this .setData({ images: images, rowState: r_state,Rows: rs, imageNum: len, UpHeight: (14 * (1 + Math.floor((nv) / 4))) + "%;" }) |
报错截下图呢。。代码把整个 properties 贴出来呢?
properties: {
images: {
type: Array,
value:[],
observer:
function
(nv, ov, cp) {
// console.log('nv:'+nv.toString());
// console.log('ov:' + ov.toString());
// console.log('data:'+this.data.images.toString());
if
(nv!=ov){
var
imgs = nv, images = [], rs = [[], [], []], r_state = [[], [], []];
for
(
var
x
in
imgs) {
var
p1 = Math.floor(x / 4);
rs[p1][x % 4] = imgs[x]; r_state[p1][x % 4] = 2;
images.push(imgs[x].substring(imgs[x].indexOf(
'/images/'
)));
}
var
len = imgs.length, p1 = Math.floor(len / 4);
if
(len < 9) rs[p1][len % 4] =
"/images/addImage.png"
;
this
.setData({ images: images, rowState: r_state,Rows: rs, imageNum: len, UpHeight: (14 * (1 + Math.floor((nv) / 4))) +
"%;"
})//30行就是setData这里
}
}
}
},
像这样把下面的内容打出来看看呢,另外。。看下你界面怎么用这些值的啊
我在observer里加上一条console.log()语句时,发现会无限循环打印,而我的代码里并没有循环语句。。
你写了循环了哦。。你看看,你observer监听的是 images。然后你又在方法里 setData给images赋值
不要黑人家官方。。。
[] != [] // true