2014-12-11 70 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 
};