2014-12-11 72 views
0

我有这个在我保存功能如何防止在确认对话框默认角JS

$scope.saveData = function() { 

    if (confirm("Are you sure you want to save") === false) { 
     return 
    } 


// do saving 

现在,如果我在上面的代码中使用的话,我得到这个点击是之后。即使我点击取消,我仍然在萤火虫中得到同样的错误。但我的数据得到保存,如果我点击是,但错误仍然存​​在。 我只看到这在Firefox和不在铬。

如果我删除确认对话框,那么该错误消失了。所以它肯定与对话

Error: [$rootScope:inprog] $apply already in progress http://errors.angularjs.org/1.2.25/ $rootScope/inprog?p0=%24apply

,所以我想可能是我需要

e.preventDefault();

我该如何使用,在上面的函数。我使用这样的

ng-click = "saveData()"

+0

将'$ event'从视图传递给saveData方法,并在saveData函数内执行'$ event.preventDefault()'。即'ng-click =“saveData($ event)”' – PSL 2014-12-11 01:22:50

+0

@PSL我可以在函数启动时做到这一点。如果eomeone点击是,那么我restoreDefault。是否有任何功能继续默认 – user3214546 2014-12-11 01:26:11

+0

没有继续默认,继续默认是默认行为:) ..只防止默认行为,如表单帖子,锚点击等特定行为。但我没有任何线索在这里你有什么这个ng点击。 – PSL 2014-12-11 01:27:24

回答

1
<button ng-click="saveData($event)">Save</button> 

Firefox不会自动通过在event出于某种原因,所以你必须把它从标记通过。

$scope.saveData = function (e) { 

    if (confirm("Are you sure you want to save") === false) { 
     e.preventDefault(); 
     return; 
    } 
    // do saving 
};