javascript - angular中ng-click事件
PHP中文网
PHP中文网 2017-04-11 13:03:00
[JavaScript讨论组]
  1. 我在ng-click事件中修改了$scope,为什么页面部分被修改的数据没有重新渲染

  1. {{ obj.text }}
  $scope.reset=function(){
                var sum=0;
                this.thinglist.forEach(function (item,index){
                    if(!item.isDone){
                        sum++;
                    }
                })
                this.many=sum;
                // $scope.$apply();
                console.log(this.many);
            }
            $scope.add=function(ei){
                // console.log(this)
                this.thinglist.push({
                    text:this.thing,
                    isDone:false
                });
                this.thing="";
                // this.many++;
                this.reset();
                // console.log(this.thinglist);
            }
            $scope.do=function(index){
                // console.log(this);
                // this.many=this.many-1;
                this.thinglist[index].isDone=!this.thinglist[index].isDone;
                this.reset();
                // $emit('reset');                  
                // console.log($scope.$digest)
                // this.$digest();
                // console.log(this.many);
                // $scope.$apply;
                
            }

在reset方法里面我设置了修改many的值,每次调用下面的do和add的时候,只有add会重新渲染页面.

PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(2)
巴扎黑

送你一句话:this != $scope

=======UPDATE========

尝试修改成这样:


    $scope.reset=function(){
                var sum=0;
                $scope.thinglist.forEach(function (item,index){
                    if(!item.isDone){
                        sum++;
                    }
                })
                $scope.many=sum;
                // $scope.$apply();
                console.log(this.many);
            }
            $scope.add=function(ei){
                // console.log(this)
                $scope.thinglist.push({
                    text:this.thing,
                    isDone:false
                });
                $scope.thing="";
                // this.many++;
                $scope.reset();
                // console.log(this.thinglist);
            }
            $scope.do=function(index){
                // console.log(this);
                // this.many=this.many-1;
                $scope.thinglist[index].isDone=!$scope.thinglist[index].isDone;
                $scope.reset();
                // $emit('reset');                  
                // console.log($scope.$digest)
                // this.$digest();
                // console.log(this.many);
                // $scope.$apply;
                
            }
高洛峰

我已经解决了这个问题,悲剧,看了一个老外的一篇博客,通过设置定时器解决了.究其原因,应该是脏值检查的问题.虽然已经触发了脏值检查,但是这里检测不到数据的修改.

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号