2014-12-11 2 views
0

У меня есть это в моих сохранить функцииКак я могу предотвратить дефолт в диалоге подтверждающего в угловом JS

$scope.saveData = function() { 

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


// do saving 

Теперь, если я использую выше код, то я получаю это после нажатия да. Даже если я нажму «отменить», я все равно получаю такую ​​же ошибку в firebug. Но мои данные сохраняются, если я нажимаю «да», но ошибка все еще существует. Я вижу это только в firefox, а не в хроме.

Если я удалю подтверждение, то эта ошибка исчезла. поэтому его определенно связаны диалоговое

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

SO я думал, может быть, мне нужно

e.preventDefault();

Как я могу использовать, что в приведенной выше функции. Я использую как этот

ng-click = "saveData()"

+0

Передайте '$ event' методу saveData из представления и выполните' $ event.preventDefault() 'внутри функции saveData. i.e 'ng-click =" saveData ($ event) "' – PSL

+0

@PSL могу ли я сделать это в начале функции. и если eomeone нажмите «да», то «restoreDefault». есть ли какая-либо функция для продолжения По умолчанию – user3214546

+0

По умолчанию нет продолжения по умолчанию, продолжить по умолчанию является поведением по умолчанию :) .. Только preventDefault, который предотвращает поведение по умолчанию для определенного действия, например, сообщение формы, якорный щелчок и т. д. Но у меня нет подсказки здесь, где у вас есть этот ng-click. – PSL

ответ

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 
}; 
Смежные вопросы