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

Yii の IRC の誰かのおかげで、これに対する答えを見つけることができました - あなたの名前は思い出せませんが、ありがとう! 基本的に、フィールドの名前属性を配列に変更する必要がありました。

<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 に答える