У вас может быть директива ng-submit
для form
. Когда вы нажимаете кнопку отправки, она вызывает метод, указанный в директиве ng-submit
.
Разметка
<form name="myForm" ng-submit="submit()">
<input name="name" type="text" ng-model="name"/>
<button>Save Draft</button>
<button type="submit">Submit</button>
<form>
Прочтите здесь как работают формы в AngularJS?
Обновление 1
Если вы хотите выполнить проверку кнопки click
, но сделать ее тип как button
, это будет выглядеть примерно так, как показано ниже, с использованием директивы ng-click
Разметка
<form name="myForm" ng-submit="submit()">
<input name="name" type="text" ng-model="name"/>
<button type="button" ng-click="manualSubmit()">Save Draft</button>
<button type="submit">Submit</button>
<form>
Код
$scope.manualSubmit = function(){
//do your the process of adding hidden fields.
//then submit a form
//if you don't want to submit on some cases then put it in condition block
$('form').submit(); // this will submit form
}
Но технически я бы не предпочел использовать этот подход, используя jQuery с циклом дайджеста Angular.
Если бы вы действительно хотели добавить поле hidden
внутри формы, я бы оставил их на самом form
, а не добавлял их динамически перед отправкой формы. И будет использовать директиву ng-submit
.
Для заполнения этих скрытых значений вы можете использовать директиву ng-value
с переменной области видимости в ней. Что будет делать эта директива ng-value
, так это обновить это скрытое поле, предположим, что значение scopeVariable
изменено из-за того, что контроллер обновит значение скрытого поля.
<form name="myForm" ng-submit="submit()">
<input name="name" type="text" ng-model="name"/>
<input type="hidden" name="somehiddenfield" ng-value="scopeVariable"/>
<button>Save Draft</button>
<button type="submit">Submit</button>
<form>
Обновление 2
В соответствии с комментарием вы хотели отправить форму вручную, используя angular, для этого у вас может быть директива, которая отправит form
. В таком случае вам не нужен ng-submit.
Разметка
<button type="button" my-submit="callback()">Save Draft</button>
Директива
app.directive('mySubmit', function(){
return {
restrict: 'A',
link: function(scope, element, attrs){
element.on('click', function(event){
//do stuff before submitting
element.parent.submit(); //manually submitting form using angular
if(attrs.callback)
scope.$eval(attrs.callback);
})
}
}
})
Обновление 2 Plunkr
person
Pankaj Parkar
schedule
03.11.2015
click
? - person Pankaj Parkar   schedule 03.11.2015