javascript - 如何在 Angularjs 中模拟 HTML 表单请求?

标签 javascript html angularjs

我使用 Laravel 制作了一个应用程序,因此大部分页面使用简单的 HTML 表单发送 HTTP 请求。

我最近决定使用 Angular Material 来编写我的前端代码,但由于所有输入组件都强制使用 ng-model,我想使用 Angular Controller 来模仿简单的 HTML 表单提交的行为。

例如:我要这个

index.html

<form action="/confirm" method="POST">
    <input type="text" name="name">
    <input type="submit" value="Submit">
</form>

通过使用这个

index.html

<input type="text" name="name" ng-model="name">

<form action="/confirm" method="POST" ng-submit="submit($event)">
    <input type="submit" value="Submit">
</form>

应用程序.js

var app = angular.module('MyApp', []);
app.controller('AppController', ['$scope', function($scope){
    $scope.submit = function(e){
        e.preventDefault();
        var url = e.currentTarget.getAttribute('action');
        var data = {
            name : this.name
        };

        // Some code here that I can't figure out
        // Which will mimic the simple HTML Form Submission

    };
}]);

一个解决方案 是在表单内为表单外的每个输入附加一个隐藏的输入。我不想那样做,那样效率很低。

还有其他方法吗?谢谢。

如果有人知道如何处理文件输入,那就太好了。

最佳答案

Javascript:

app.controller("MainCtrl", ["$scope", "$http", function($scope, $http) {
  $scope.name = null;

  $scope.submitForm = function(name) {
    //submitting form items depend on what your /confirm endpoint is expecting
    //is it expecting JSON, form data in the body, etc?

    //JSON
    var payload = {
        name: name
    };

    //submitting via FormData
    //var payload = new FormData();
    //payload.append("name", name);

    //use $http to post to server
    $http.post('/confirm/', payload).then(function(response) {
        //success
    }, function() {
        //an error has occurred
    });
  }
}]);

HTML:

<form id="myForm" name="myForm" ng-submit="submitForm(name)">
    <!-- bind model to input using ng-model -->
    <input required type="text" ng-model="name" />
    <button ng-disabled="myForm.$invalid" type="submit" ng-click="submitForm(name)">Submit</button>
</form>

关于javascript - 如何在 Angularjs 中模拟 HTML 表单请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37013127/

相关文章:

javascript - 无法为 View 实例化 ngRoute

javascript - 检查 JavaScript 数组中是否存在值

html - 隐藏元素中除图像之外的所有内容

javascript - 窗口调整大小时按钮跟不上 slider

javascript - 使用 Fullcalendar 在 mysql 上插入一个日期与当前日期不同的事件

javascript - 隐藏具有显示属性或左/上的元素?

javascript - 如何解决 JS/Jquery 动画代码流错误?

css - Angular Material 全屏问题中的分屏布局

jquery - 为什么我无法从测试框架中的有效 JSON 文件解析对象结构

javascript - pouchdb 已停止同步且没有错误