ng-repeatを使用してテーブルにJSON応答を表示しようとしています。問題は、受信されるすべてのオブジェクトが同じではないということです。それらのすべてには、日付、短いメッセージ、長いメッセージがあります。長さが異なる付加価値リストを持つものもあります。このリストは、独自のテーブルまたはリスト内の長いメッセージの下に表示する必要があります。私はalert.slice().reverse()
を使用します。なぜなら私は最新のエントリを上にしたいからです。新しいオブジェクトは.push({values})
を使用して挿入されます。動的入力によるネストされたng-repeat
<tbody class="AlTbody" ng-repeat="alerts in alerts.slice().reverse()" ng-class="className">
<tr class="Altr Aldate">
<td ng-show="{{alerts.Date}}"><b>{{alerts.Date}}:</b>
</td>
</tr>
<tr class="Altr Alshort " ng-click="toggleDetail($index)">
<td>{{alerts.S}}</td>
</tr>
<tr class="Altr " ng-show="activePosition == $index">
<td class="msgL">{{alerts.L}}
<!-- 1) <p ng-show="{{item.List}}"><br><ul><li>Previous values:</li> <li ng-repeat="vals in ValueList">{{vals.value}}</li></ul> </p>-->
<!-- 2) <p ng-show="{{List.txt}}"> <br><ul><li>Previous values:</li> <li ng-repeat="List in alerts.List">{{List.txt}}</li></ul> </p>-->
</td>
</tr>
</tbody>
私は既にコードに見られるように2つのアプローチを試みました。最初のメッセージは正しいリストを表示しましたが、長いメッセージが属しているメッセージの代わりに表示されました。私は新しい変数を使用しました。
var l=valList.length;
scope.List=true;
while(l>-1){
scope.ValueList.push({value: valList[l]});
l--;
}
インデックスを見つけることができなかったため、2番目の方法はまったく機能しませんでした。
var l=valList.length;
var indexV= jQuery.inArray(currdate,scope.alerts.Date);
while(l>-1){
scope.alerts[indexV].List.push({txt: valList[l]});
l--;
}
編集: これは、現在のoutputです。 2つのオブジェクト(日付、短いメッセージ、長いメッセージ)が表示され、両方とも以前の値のセクションがあります。しかし、上のオブジェクトだけが以前の値のリストを表示することになっています。
これは、オブジェクトがpredifeniedでなく、さらにプログラムの実行中に追加されたときにも機能しますか? JSON構造体はこの複合体です。なぜなら、「アラート」を受け取るのは、アラートの1つに短いメッセージと長いメッセージが含まれているからです。一部のアラートには値のリストも含まれています。私はこれを単純化する方法を知らない。私はまた、私の質問に出力を追加しました。 –
はいスコープモデルを非同期に変更すると、ビュー/テンプレートでも更新されます。 –