我正在经历 AngularJs 的学习曲线,我发现几乎没有任何示例可以用于现实世界。
我正在尝试清楚地了解如何提交具有最标准组件的表单并将其传递给 PHP 文件..
我的fiddle .
有没有人有任何关于提交简单、无污染的表单的好例子,可以帮助我和可能许多其他 Angularjs 初学者..
当我说一个干净的形式时,我指的是这样的东西..
<div ng-app="myApp">
<form name="saveTemplateData" action="#" ng-controller="FormCtrl" ng-submit="submitForm()">
First name: <br/><input type="text" ng-model="form.firstname"> <br/><br/>
Email Address: <br/><input type="text" ng-model="form.emailaddress"> <br/><br/>
<textarea rows="3" cols="25" ng-model="form.textareacontent"></textarea>
<br/><br/>
<input type="radio" ng-model="form.gender" value="female" />Female ...
<input type="radio" ng-model="form.gender" value="male" />Male <br/>
<br/><br/>
<input type="checkbox" ng-model="form.member" value="5"/> Already a member
<br/><br/>
<input type="file" ng-model="form.file_profile" id="file_profile"><br/>
<input type="file" ng-model="form.file_avatar" id="file_avatar">
<br/><br/>
<!-- <button ng-click="save()" >Save</button> -->
<input type="submit" ngClick="Submit" >
</form>
</div>
我的 ng-app 代码...
var app = angular.module('myApp', []);
app.controller('FormCtrl', function ($scope, $http) {
var formData = {
firstname: "default",
emailaddress: "default",
textareacontent: "default",
gender: "default",
member: false,
file_profile: "default",
file_avatar: "default"
};
$scope.save = function() {
formData = $scope.form;
};
$scope.submitForm = function() {
console.log("posting data....");
formData = $scope.form;
console.log(formData);
//$http.post('form.php', JSON.stringify(data)).success(function(){/*success callback*/});
};
});
我想我从这里开始的三个问题是......
- 我的 php 文件应该如何与之交互(如何将 json 字符串放入 php 文件中的数组中)?
- 当复选框为真时,我将如何提交复选框的值?
- 我找到了很多关于使用 jQuery 和 Angular 提交图像的信息,我看到这个提交中已经有一个图像对象,我该如何检索该数据?图片中应包含哪些注意事项?
我愿意拿出任何清晰简洁的资料,为大家整理一个很好的学习榜样……
我的fiddle
最佳答案
警告这是针对 Angular 1.x 的
如果您正在寻找 Angular(v2+,当前版本 8),试试这个 answer或 official guide .
原始答案
我在这里重写了你的 JS fiddle :http://jsfiddle.net/YGQT9/
<div ng-app="myApp">
<form name="saveTemplateData" action="#" ng-controller="FormCtrl" ng-submit="submitForm()">
First name: <br/><input type="text" name="form.firstname">
<br/><br/>
Email Address: <br/><input type="text" ng-model="form.emailaddress">
<br/><br/>
<textarea rows="3" cols="25">
Describe your reason for submitting this form ...
</textarea>
<br/>
<input type="radio" ng-model="form.gender" value="female" />Female
<input type="radio" ng-model="form.gender" value="male" />Male
<br/><br/>
<input type="checkbox" ng-model="form.member" value="true"/> Already a member
<input type="checkbox" ng-model="form.member" value="false"/> Not a member
<br/>
<input type="file" ng-model="form.file_profile" id="file_profile">
<br/>
<input type="file" ng-model="form.file_avatar" id="file_avatar">
<br/><br/>
<input type="submit">
</form>
</div>
在这里,我使用了很多 Angular Directive(指令)(ng-controller
、ng-model
、ng-submit
)基本的html表单提交。
通常,“Angular 方式”的所有替代方案都有效,但表单提交会被 Angular 拦截并取消,以允许您在提交前操纵数据
但是 JSFiddle 无法正常工作,因为它不允许任何类型的 ajax/http post/get,因此您必须在本地运行它。
有关 Angular 表单提交的一般建议,请参阅 cookbook examples
更新食谱不见了。相反,请查看 form submission 的 1.x 指南
Angular 的食谱有很多示例代码,因为文档对用户不太友好。
Angularjs 改变了您的整个 Web 开发过程,不要尝试按照您习惯使用 JQuery 或常规 html/js 的方式做事,但对于您所做的一切,请查看一些示例代码,因为几乎总是有一个 Angular 选择。
关于javascript - Angularjs - 简单的表单提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19985344/