2014-10-20 33 views
0

使用Yii,我有一个用于创建模型实例的表单。我通过一个vanilla HTML POST而不是ng-submit来提交表单。我目前有:ng-repeat-generated表单字段没有在HTML post上提交

<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数组提出请求,因此使用该数组代替运行另一个查询是不错的,更不用说我将PHP路由的边框变暗的JS函数丢失为好。有关为什么这些不提交以及如何解决它的任何想法?

+0

乍一看,它看起来不像那两个会输出相同的HTML。你能证实吗? – Phix 2014-10-20 20:16:21

+0

'name =“Activities [category] ​​[]”''结尾的额外括号是什么? – Brett 2014-10-20 20:20:46

+0

是的,我的PHP解决方案并不完全正确。我已经更新它来匹配,并且可以确认它仍然提交得很好,而Angular解决方案没有提交。 – 2014-10-20 20:21:12

回答

0

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

你会在网络上找到许多相关的资源:这里是一个地方一个:Angular ng-repeat with ng-form, accessing validation in controller

+0

因为我正在做一个vanilla HTTP POST,所以这应该没有任何作用,但它确实让我看着我的'form'标记,并且发现它在页面结束之前就被切断了。看到我的答案。 – 2014-10-20 20:27:56

0

展望@ oori的答案,我注意到,PHP打开form标签是一个<div class="row"><div class="col-md-6">里面,当我结束了该行,它杀死了表格的其余部分。虽然表单标签之外还有其他字段,但它们发布得很好,并且PHP版本仍然很好,所以仍然让我感到困惑,但是包装所有元素的确解决了问题。感谢那些看过的人。