コードに2つの混乱した点があります。
最初の1つ、 これは私のHTMLです:
<table class="table table-hover" my-element="docu">
ダブルngリピートを使用しましたが、データは後ろから前に表示されています。これを修正する方法は?
Angularjsファイル:
これはデータです:
$scope.people = [
{"name":1,"des":"nice","age":12},
{"name":2,"des":"good","age":13}
];
..........
.directive("myElement", function () {
return {
scope: {
items: "=myElement"
},
restrict: "EAC",
template: "<tr ng-repeat="item in items" ><td ng-repeat="p in item">{{p}}</td></tr>"
};
});
結果:
12 nice 1
13 good 2
結果は次のようになります。
1 nice 12
3 good 13
二つ目、
ng-ifを使用してデータの長さを確認し、データがない場合、テーブルの本体にこの「ファイルのアップロード」が表示されましたが、この文は常にテーブルの先頭に表示されます。理由はわかりません。これを修正する方法は?
HTML:
<tbody my-element="people">
<span ng-if="people.length == 0">Upload the file</span>
</tbody>
私の結果(データがない場合):
Upload the file
Name Des Age
結果は次のようになります。
Name Des Age
Upload the file
リンクは私のコードです、それをチェックしてください:
http://codepen.io/AceSai/pen/ZbEExN?editors=101
回答:
回答№1は0最初の答え
2番目のng-repeatの構文は次のようになります。 (キー、値)in obj.
基本的に、オブジェクトのキーに対して角度でng-repeatを実行すると、キーがアルファベット順に並べ替えられたため、出力が期待されません。
だからあなたが見るなら。 あなたの出力:
年齢の名前
12いい1
13良い2
それは理にかなっていますか。
これを克服するには、配列を繰り返し、object.propertyNameを使用します。
私はあなたを取得しません 2番目の質問。 HTMLの順序に問題があるのではないかと思います。 2番目の問題について詳しく説明してください。
回答№2の場合は0
オブジェクトの配列があるので、それはつまり item
はオブジェクトであり、配列ではないので、なぜあなたが望む順序でそれを取得することを期待しているのか私は本当に理解していません。 ただし、実行できるのは1つだけです。 ng-repeat
このような:
template: "<tr ng-repeat="item in items" ><td>{{item.name}}</td><td>{{item.des}}</td><td>{{item.age}}</td></tr>"