编辑: 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);
};
答案 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>