0

我对 Angular.js 还是很陌生,正在尝试弄清楚如何从提交的表单中获取数据。但是这些字段是 ng-repeat 的一部分。在我使用 ajaxSubmitButton 提交到只显示帖子值的 php 服务器端脚本时,它只显示最后一个输入字段......如果这有任何意义的话。这是表单代码:

<form class="form">
<div id="client-form" ng:controller="ClientForm">
  <div class="client" ng:repeat="client in form.clients">
    <div class="row">
      <input type="text" name="client.name" size="80" />
    </div>
  </div>

<div>
    <?php echo  CHtml::ajaxSubmitButton(
                    'Submit',
                    CHtml::normalizeUrl(array('client/create.php')),
                    array(
                        'success'=>'function(data){
                            alert("success:"+data);
                        }',
                    )
                ); ?>
</div>

JavaScript如下:

<script src="'/js/angular.min.js'; ?>" ng:autobind></script>
<script>
function ClientForm(){
  this.form = {
    clients : [
      { name: 'test1', },
      { name: 'test2', },
      { name: 'test3', },
    ]
  };

}
</script>

PHP 脚本非常简单:

<?php
    print_r($_POST);
?>

ajaxSubmitButton 调用中的警报返回以下内容:

success:Array
(
  [client]=>test3
)

如您所见,它仅返回最后一个输入文本字段的值。

我敢肯定我在这里做错了什么,但似乎看不到。任何指导都会很棒。

谢谢。

4

1 回答 1

0

感谢 IRC for Yii 上的某个人,我设法找到了答案 - 不记得你的名字,但谢谢!基本上我必须将字段的名称属性更改为数组。

<input name="client[name][]" value="{{client.name}}" />

这现在非常适用于文本字段。但是对于选择下拉列表,它不再选择预定义的值。

<form class="form">
<div id="client-form" ng:controller="ClientForm">
  <div class="client" ng:repeat="client in form.clients">
    <div class="row">
      <input name="client[name][]" value="{{client.name}}" /><input name="client[id][]" value="{{client.id}}" />
      <?php
        echo CHtml::dropDownList('client[select][]', '{{client.select}}', CHtml::listData(Region::model()->findAll(array('order' => 'name')), 'id', 'name'), array('empty' => 'Select a Region'));
      ?>{{client.id}}
    </div>
  </div>

<div>

Javascript:

<script src="<?php echo Yii::app()->baseUrl . '/js/angular.min.js'; ?>" ng:autobind></script>
<script>
function ClientForm(){
  this.form = {
    clients : [
      { name: 'test1', id:'1', select:'1'},
      { name: 'test2', id:'2', select:'2'},
      { name: 'test3', id:'3', select:'3'},
    ]
  };

}
</script>

知道如何确保我的选择列表现在已预先填充吗?

谢谢。

于 2013-02-12T13:28:44.193 回答