为什么ng-click再次使用需要这么长时间?

时间:2015-10-09 21:59:39

标签: angularjs angular-digest

编辑: ng-dbclick对我不起作用,或者在这里使用。

原件:

我有一个按钮。我点击一次,它按预期工作。我再次点击它,它不起作用。我等了一分钟,然后它确实有效。我与该按钮相关联的函数确实有很多返回,如果循环调用其他函数,但问题是,它确实每次都能正常工作。在这里,我实现了一个双击功能(因此计数器是1和2,它确实有效) - 双击时项目被标记为完成,否则只需单击它就会暂停或启动,具体取决于其状态。 / p>

我知道我可能不理解这里的摘要或eval周期,或者可能需要使用$ scope.apply()...我基本上根本不理解这些概念或在哪里使用它们。我的嵌套函数中有$ http get和post请求。

HTML文件中的代码:

<button ng-click="resumeorpauseproject(project, project.id)">Click me</button>

来自控制器文件的代码:

$scope.resumeorpausecounter = 0;

$scope.resumeorpauseproject = function(value1, value2){


        $scope.resumeorpausecounter = $scope.resumeorpausecounter + 1;


        $timeout(function () {
            if ($scope.resumeorpausecounter == 1) {


                $scope.resumeorpauseproject1(value1, value2);
                return;

            }

            if ($scope.resumeorpausecounter == 2) {

                /*$scope.resumeorpausecounter = false;*/


                $scope.markprojectascomplete(value1, value2);
                return;

            }


        }, 300);


};

1 个答案:

答案 0 :(得分:0)

http://plnkr.co/edit/FNrP5Q9ivQR55zuLTa6U?p=preview

你要做的是疯狂的imo。

只需正确建模并使用ng-dblclick。如果正确理解你的情况,你实际上并不需要申请$ digest或$ apply。

如果我们只考虑功能,那么您拥有的是一个项目,并且应该在双击时标记为已完成,并且应该切换单击启动和停止之间: 这是相关的js:

 project.state = {
     started: false,
     completed: false,
     toggleStarted: function toggleStarted(){
       this.started = !this.started;
     },
     markCompleted: function markCompleted(){
       this.completed = true;
     }
 };

这是相关的html:

<button 
    data-ng-click="project.state.toggleStarted()"
    data-ng-dblclick="project.state.markCompleted()"
>
    Click me
</button>