使用 Angular 的简单提交表单
Simple submit form using Angular
我是 Angular 的新手,但是 google 已经很老了。
我无法找到如何使用 Angular 提交此表单,就像我们在 jQuery 中所做的那样。
<form>
<input type="text" />
<button type="button" class="saveDraft">Save Draft</button>
<button type="submit">Submit</button>
<form>
我想通过保存草稿按钮而不是普通提交按钮提交此表单。
jQuery 我们使用
$('.saveDraft').click(function () {
$('form').submit(); // this will submit form
});
这里有一个例子:
<form ng-submit="submit()" ng-controller="ExampleController">
Enter text and hit enter:
<input type="text" ng-model="text" name="text" />
<input type="submit" id="submit" value="Submit" />
<pre>list={{list}}</pre>
</form>
和文档:
您可以在 form
上设置 ng-submit
指令,当您单击提交按钮时,它会调用 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>
阅读此处
更新 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
}
But technically I wouldn't prefer to do this approach as using jQuery with make
problem Angular digest cycle.
如果您真的想在表单中添加 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);
})
}
}
})
你只需用这个替换你的代码
<form name="myForm" ng-submit="submit()" action=" name of other page" autocomplete="on">`
<input name="name" type="text" ng-model="name"/>
<button onClick="draft(this.form)">Save Draft</button>
<button type="submit" name="submit">Submit</button>
我是 Angular 的新手,但是 google 已经很老了。
我无法找到如何使用 Angular 提交此表单,就像我们在 jQuery 中所做的那样。
<form>
<input type="text" />
<button type="button" class="saveDraft">Save Draft</button>
<button type="submit">Submit</button>
<form>
我想通过保存草稿按钮而不是普通提交按钮提交此表单。
jQuery 我们使用
$('.saveDraft').click(function () {
$('form').submit(); // this will submit form
});
这里有一个例子:
<form ng-submit="submit()" ng-controller="ExampleController">
Enter text and hit enter:
<input type="text" ng-model="text" name="text" />
<input type="submit" id="submit" value="Submit" />
<pre>list={{list}}</pre>
</form>
和文档:
您可以在 form
上设置 ng-submit
指令,当您单击提交按钮时,它会调用 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>
阅读此处
更新 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
}
But technically I wouldn't prefer to do this approach as using jQuery with make problem Angular digest cycle.
如果您真的想在表单中添加 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);
})
}
}
})
你只需用这个替换你的代码
<form name="myForm" ng-submit="submit()" action=" name of other page" autocomplete="on">`
<input name="name" type="text" ng-model="name"/>
<button onClick="draft(this.form)">Save Draft</button>
<button type="submit" name="submit">Submit</button>