3

我正在尝试在 Angular 应用程序中提交标准表单。一切正常,直到我尝试将 ng-click 添加到表单的提交按钮单击操作只是为了给用户一些反馈。

我的行为有点奇怪。提交完成,点击行为的调用都被调用了,但是,没有随表单提交的参数。

我一直在谷歌搜索,人们似乎说在表单上使用 ng-click 禁用提交,但事实并非如此,每个工作正常,除了未发送的表单参数。

我知道我可能可以重新定义自己的提交功能,使用 ng-submit 拦截帖子并自己做帖子,这似乎有点矫枉过正,因为我想做的几乎是工作。(在这种情况下,我如何从角度回调中获取表单参数?)

更新

这是一个实时示例: http: //jsfiddle.net/hHapg/5/。如果您选中一个框并提交,则 URL 上没有参数。如果您编辑文件并删除提交按钮上的 ng-click,它就可以工作。

<form ng-app="test" action="/echo/jsonp" name="orders" target="_blank" ng-controller="test">
    <table>
    <tr ng-repeat="order in [{orderId:1}, {orderId:4}]" >
        <td>
            <input  type="checkbox" name="order_ids{{i}}" value="{{order.orderId}}"></input>
        </td>
        <td>
            {{order.orderId}} : {{ order.checked}}
        </td>

    </tr>
    </table>
    <input type="submit" name="action" value="Picking List" class="btn btn-primary picked" ng-clik="submit(true)">
</form>

解决方案

发现了问题。尽管真正的代码并不完全是我发布的代码。在兰登的帮助下,我设法解决了这个问题。问题是我在表单声明中有一个硬编码数组(而不是在我的示例中的 ng-repeat 中)。(从角度来看,它是硬编码的,但实际上是在运行时生成的)。将此数组移动到顶部(与 ng-ap 相同),解决了 prome。

4

1 回答 1

2

您是否在所有标签上设置name属性?我想大多数 Angular 示例都不包含该属性,因为提交表单似乎已成为过去。inputselectname

下面的简化示例工作正常。我需要查看您的特定代码,以帮助您解决可能存在的其他问题。

http://jsfiddle.net/langdonx/DUV9q/

HTML:

<form ng-app="test" ng-controller="test" action="/echo/jsonp/" method="get">
    <input type="text" name="value1" ng-model="value1"/>
    <input type="text" name="value2" ng-model="value2"/>
    <input type="submit" ng-click="submit()">
</div>

JavaScript:

var app = angular.module('test', []);

app.controller('test', function ($scope, $http) {
    $scope.value1 = "val 1 here";
    $scope.value2 = "and val 2 here";

    $scope.submit = function () {
        alert('it should submit now, if it worked, you\'ll see some json');
    }
});
于 2013-04-02T14:52:13.297 回答