监听函数在定义之后不是就会立即执行一次吗,那为什么仍然不能显示呢,能解释一下具体的内部执行顺序吗?
1 回答
一只斗牛犬
TA贡献1784条经验 获得超2个赞
你可以试一下下面这段代码的执行结果就知道自己的问题在哪里了,这是js中的一个很典型的闭包问题,可以使用匿名函数解决.
for(var i = 0;i<3;i++){
setTimeout(function(){
console.log(i);
}, 200);
};
for(var j = 0;j<3;j++){
(function (j) {
setTimeout(function(){
console.log('j',j);
}, 200)
})(j);
};
你所监听的一直是data[3],可以修改如下:
(function(i,itemElement){
var watcherFn = function (watchScope) {
return watchScope.$eval(propertyExpression, data[i]);
}
scope.$watch(watcherFn, function (newValue, oldValue) {
itemElement.text(newValue);
});
})(i,itemElement)
添加回答
举报
0/150
提交
取消