2017-01-02 5 views
3

オブジェクトリストを作成し、ng-repeatを使用してそのリストを繰り返してテーブル行を生成します。各tdには、ソース名とチェックボックスが含まれています。私はリストに利用できないプロパティでチェックボックスをバインドしたい。どのように可能ですか?angularjsのオブジェクトにプロパティを動的に追加するng-repeat

scope.reasons = [ 
     {sourceName:'Lack of rainfall'}, 
     { sourceName: 'Change in land use' }, 
     {sourceName:'Change in Land Cover'} 
     ]; 

とHTMLコードはそのようなものです: - - :リストではそのようなものです

<table> 
    <tr ng-repeat="source in reasons"> 
    <td>{{source.sourceName}}</td> 
    <td><input type="checkbox" ng-checked="source.postAdequate"></td> 
    </tr> 
</table> 
+0

プロパティは、オブジェクトで使用できない場合は、オブジェクトのプロパティを動的に追加することをしたいですか? –

+0

プロパティをどのようにするかのようないくつかの例をハードコードできますか? – Sharmila

+0

@Mayank Nimjeはい。 – Alamgir

答えて

1

あなたはng-model属性を使用してこれを行うことができ、ng-changeだけ変化検出で確認のためにあります。

<table> 
    <tr ng-repeat="source in reasons"> 
     <td>{{source.sourceName}}</td> 
     <td> 
     <input type="checkbox" ng-model="source.postAdequate" ng-change="changeDet()"> 
     </td> 
    </tr> 
    </table> 

Demo Fiddle

希望これは、すべてのオブジェクトのプロパティを反復処理することが必要な場合、チェックボックスが

<input type="checkbox" ng-model="source.postAdequate"></td> 

に変更されたときに代わりにng-checkedng-modelを使用して

+1

'ng-change'は質問に関連する何もしていません。説明が意味をなさない – charlietfl

+0

うん、それを逃した、ありがとう –

+0

私はng-modelの代わりにng-checkedを使って解決した。 jajhakallah junaid vi。 ng-changeを使用する必要はありません。 – Alamgir

0

は内部プロパティを追加しますことができます配列を追加して追加します

scope.reasons.forEach(function(item){ 
    item.postAdequate = false 
}) 
1

これを試してみてください:

<input type="checkbox" ng-model="source.postAdequate"> 

ここjsfiddleのリンクを参照してください:

https://jsfiddle.net/avnesh2/5cpm48tc/2/ 

をしかし、あなたがクリックした場合、それが唯一source.postAdequate: true/falseを追加し、同じまま意志オブジェクトのまま。

source.postAdequate: true/falseをすべて追加する場合は、先に$scope.reasonsを追加してください。

希望すると、これが役立ちます。

+0

ドキュメントごとに同じ要素に対して 'ng-checked'と' ng-model'を使用することはできません – charlietfl

+0

ありがとう@charlietfl、削除するのを忘れました。 –

0

scopeオブジェクトを1回ループして、すべてのアイテムに対して最初にpostAdequate:falseを設定できますか?次に、そのオブジェクトをチェックボックスでバインドします。

 angular.forEach($scope.reasons, function(e,i){ 
      e.postAdequate = false; 
     }); 

htmlコード

<table> 
<tr ng-repeat="source in reasons"> 
<td>{{source.sourceName}}</td> 
<td> 
<input type="checkbox" ng-model="source.postAdequate" ng-click="clickfunction(source.postAdequate)"> 
</td></tr> 
</table> 
関連する問題