为了账号安全,请及时绑定邮箱和手机立即绑定

angularJs闭包中使用$watch监听的执行过程

angularJs闭包中使用$watch监听的执行过程

Cats萌萌 2018-12-18 17:18:52
监听函数在定义之后不是就会立即执行一次吗,那为什么仍然不能显示呢,能解释一下具体的内部执行顺序吗?
查看完整描述

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)


查看完整回答
反对 回复 2019-01-05
  • 1 回答
  • 0 关注
  • 447 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信