javascript - angular中ng-click事件

查看:98
本文介绍了javascript - angular中ng-click事件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

  1. 我在ng-click事件中修改了$scope,为什么页面部分被修改的数据没有重新渲染

<ol>
        <li  ng-repeat="(index,obj) in thinglist" ng-class="{done:obj.isDone}" ng-click="do(index)">{{ obj.text }}      <button ng-click="delete(index)"> X</button>  </li> 
    </ol>

  $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会重新渲染页面.

解决方案

送你一句话: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;
                
            }

这篇关于javascript - angular中ng-click事件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆