0

编辑:ng-dbclick 对我不起作用,否则将在此处使用。

原来的:

我有一个按钮。我单击它一次,它按预期工作。我再次点击它,它不起作用。我可能再等一分钟,然后它确实起作用了。我与按钮关联的函数确实有很多返回和调用其他函数的 if 循环,但问题是,它每次都可以完美地工作。在这里,我实现了一个双击功能(因此计数器是 1 和 2,它确实有效) - 双击时项目被标记为完成,否则单击它会根据其状态暂停或启动。

我知道我可能不了解这里的摘要或评估周期,或者可能需要使用 $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);


};
4

1 回答 1

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>
于 2015-10-09T22:31:13.757 回答