2

在我的 Angular 应用程序中,我有一个绑定到模型的表单。该表单没有所有模型属性的字段。当用户点击提交按钮时,我想以传统方式发布表单,而不是作为 AJAX 请求(我必须处理已经存在的服务器端脚本)。

action如果我在表单中添加一个,那基本上可以工作。但它显然只提交带有当前字段的表单,而不是像使用$http服务时所做的那样提交整个模型。此外,它不会创建名称属性。

我如何以老式方式提交带有完整模型数据的表单?我是否必须自己创建缺少的表单字段,或者有没有办法让 Angular 为我做这件事?

<script>
    angular.module('foobar', []).controller('ContentCtrl', ['$scope', function($scope) {
        $scope.content = {
            'title': 'Foo',
            'subtitle': 'Bar',
            'text': 'desc' // this field is missing in the form itself and therefore is not submitted
        };
    }]);
</script>

<form action="http://postcatcher.in/catchers/521c6510429f840200000169" method="post" ng-controller="ContentCtrl">
    <input type="text" name="est" ng-model="content.title" value="asdf">
    <input type="text" ng-model="content.subtitle">
    <button>submit</button>
    <a href="http://postcatcher.in/catchers/521c6510429f840200000169">see post result</a>
</form>

这是一个笨蛋:http: //plnkr.co/edit/5XYGH9hTe7cpchSFWbTK

4

1 回答 1

3

当你有一个定义了动作的表单时,Angular 不会做任何特别的事情。它是纯 html 表单提交,其中包含已定义的字段。

通常你会使用:

<input type="hidden" ng-model="content.desc">

目前 Angular(1.2.0rc1)仍然不支持ng-model绑定到隐藏输入。

解决方法是这样的:

<input type="text" name="text" ng-model="content.text" ng-hide="true">
于 2013-08-27T11:02:52.877 回答