【问题标题】:ng-repeat-generated form fields not submitting on HTML postng-repeat 生成的表单字段未在 HTML 帖子上提交
【发布时间】:2014-10-20 20:06:40
【问题描述】:

使用 Yii,我有一个用于创建模型实例的表单。我通过普通的 HTML POST 而不是 ng-submit 提交表单。我目前有:

<form>
...
<div ng-repeat="category in dashboard.allCategories" class="category-radio-wrap" ng-model="dashboard.category">
    <input id="radio-cat-{{category.id}}" type="radio" name="Activities[category]" value="{{category.id}}">
    <label for="radio-cat-{{category.id}}">
        <div class="color-spot" style="background-color:{{category.color}};border-color:{{darken(category.color)}}"></div>
        <span class="label-text">{{category.title}}</span>
    </label>
</div>
...
</form>

但是当我提交表单时,这些单选按钮并没有发布。我的所有其他字段,不是通过 Angular 生成的,都是。此外,如果我将其切换为 PHP for 循环,如下所示:

$cats = \app\models\Categories::find()->all();
foreach($cats as $cat) {
    echo '<div class="category-radio-wrap">';
    echo '<input id="radio-cat-'.$cat->id.'" type="radio" name="Activities[category]" value="'.$cat->id.'">';
    echo '<label for="radio-cat-'.$cat->id.'">
        <div class="color-spot" style="background-color:'.$cat->color.';border-color:'.$cat->color.';"></div>
        <span class="label-text">'.$cat->title.'</span>
    </label></div>';
}

...他们发布得很好。我可以这样做,但是由于我必须按原样发出对 JS 数组的请求,所以最好使用它而不是运行另一个查询,更不用说我失去了我的边界变暗 JS 函数去 PHP 路由出色地。关于为什么这些不提交以及如何解决它的任何想法?

【问题讨论】:

  • 乍一看,这两个似乎不会输出相同的 HTML。你能确认一下吗?
  • name="Activities[category][]" 末尾的额外括号是什么?
  • 是的,我的 PHP 解决方案不太正确。我已经更新它以匹配并且可以确认它仍然可以正常提交,而 Angular 解决方案没有。
  • 那个括号来自于将它作为一系列复选框进行测试,以查看它是否特定于单选按钮。我已经删除了它们。

标签: javascript php angularjs


【解决方案1】:

尝试将它们包装在 ng-form 中。这是这个已知问题的简单解决方案。 其他解决方案正在使用 ngModelController。这很酷,但学习曲线更高。

您会在网上找到许多相关资源:这是本地资源:Angular ng-repeat with ng-form, accessing validation in controller

【讨论】:

  • 因为我正在做一个普通的 HTTP POST,这不应该有任何影响,但它确实让我查看了我的 form 标签并注意到它在结束之前被切断了页。看我的回答。
【解决方案2】:

查看@oori 的答案,我注意到打开form 标记的PHP 位于&lt;div class="row"&gt;&lt;div class="col-md-6"&gt; 内,当我结束该行时,它杀死了表单的其余部分。虽然在表单标签之外还有其他字段,但它们发布得很好,而且 PHP 版本仍然发布得也很好,所以这仍然让我感到困惑,但是将我所有的元素都包装起来确实解决了这个问题。感谢那些看过的人。

【讨论】:

    猜你喜欢
    • 2015-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-07
    • 1970-01-01
    • 2014-03-11
    相关资源
    最近更新 更多