2017-09-19 13 views
1

タイトルがちょっと混乱していることがわかりましたが、私は文章でそれを説明するために最善を尽くしました。私は、CodeIgniterで構築された選択フィールドで角度変化を使用したいと思います。これらの選択は配列から生成されます。これらのうちの1つを変更すると、すべての選択フィールドに同じ値が自動的に選択されることを除いて、すべてが問題ありません。ng-changeで選択すると、すべての選択フィールドが自動的に変更されます。

<?php $i=1; foreach ($data as $d) : ?> 
Username: <input type="text" value="<?php echo $d->username ?>" /><br/> 
Person: 
    <select ng-model="formData[<?php echo $i ?>].id" ng-change="updateUser()"> 
    <option value="1">Nina</option> 
    <option value="2">Naila</option> 
    <option value="3">Noni</option> 
    </select><br/> 
<?php $i++; endforeach; ?> 

私は最初の選択フィールドでニーナを選択して選択を変更するときに、例えば、すべての選択フィールドに自動的にオプションニーナが選択されます。

UPDATE:コントローラで :これにより

angular.module('myApp') 
.controller('userCtrl', function($scope,$http){ 

    $scope.formData = {}; 
    $scope.updateUser = function(){ 
     for (var i=1; i < $scope.formData.length; i++){ 
     console.log($scope.formData[i]); 
     } 
    } 

私はコンソールでそれを調べるとき、私は何も得ませんでした。

属性にname=id[]を追加しようとしましたが、選択肢はまだ運がありません。助けてください。ありがとう。

+3

これは、すべての選択で同じモデル 'ng-model =" formData.id "を使用しているためです。 –

+0

だから、それが問題です。選択したオプションの値を取得する必要がある間に、これを回避するために何をすべきか教えてください。 – Abaij

+0

@Abaijその答えをチェックし、あなたの質問に答えるかどうか教えてください:) –

答えて

2

AngularJSと一緒にビューを混ぜるのは避けたいですが、モデルのインデックスを変更することはできません(コメントに記載されているように、ここではすべてselect elementsに同じngModelを使用しています)。これは次のように動作します:

<?php $index = 0; ?> 
<?php foreach ($data as $d) : ?> 
Username: <input type="text" value="<?php echo $d->username ?>"/><br/> 
Person: 
<select ng-model="formData[<?php echo $index ?>].id" ng-change="updateUser()"> 
    <option value="1">Nina</option> 
    <option value="2">Naila</option> 
    <option value="3">Noni</option> 
</select><br/> 
<?php $index++; ?> 
<?php endforeach; ?> 
+0

はい、自動的には変更されませんが、私は「不明」の価値があります。私は角度コントローラでそれを取得する方法を知らない。 – Abaij

+0

angularjsコントローラでは、 'formData'配列をチェックしなければなりません。すべての値を含んでいなければなりません。コントローラからいくつかの関連コードを投稿できますか? –

+0

私はちょうど私の質問を更新します。チェックしてください。ありがとう – Abaij

1

あなたの問題は、ng-modelごとにformData.idを使用していることが原因です。したがってng-modelは「1」(ニナ)に更新され、formData.idを使用するすべての選択要素は「1」(ニーナ)に変更されます。コントローラーで

<?php $index = 0; ?> 
<?php foreach ($data as $d) : ?> 
Username: <input type="text" value="<?php echo $d->username ?>"/><br/> 
Person: 
<select ng-model="formData[<?php echo $index ?>].id" ng-change="updateUser()"> 
    <option value="1">Nina</option> 
    <option value="2">Naila</option> 
    <option value="3">Noni</option> 
</select><br/> 
<?php $index++; ?> 
<?php endforeach; ?> 

、FORMDATAアレイ初期化:$scope.formData = []; 、次いでFORMDATA [0] .IDは、第1の選択のための値を持つことになり、FORMDATA [1]秒間.IDなど

+1

'ng-model =" formData [<?php echo $ index?>]。id "'に感謝します。大事です。 – Abaij

関連する問題