ng-repeat生成的表单字段未在HTML帖子上提交

时间:2014-10-20 20:06:41

标签: javascript php angularjs

使用Yii,我有一个用于创建模型实例的表单。我通过vanilla 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路由作为好。关于为什么这些没有提交以及如何解决它的任何想法?

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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