Dalam AngularJS, memanfaatkan ng-repeat adalah asas apabila bekerja dengan data berulang. Walau bagaimanapun, keperluan sering timbul untuk menyusun elemen ini ke dalam reka letak yang menarik secara visual, seperti tiga lajur yang berbeza. Untuk mencapai matlamat ini, kami menyelidiki pelbagai pendekatan, termasuk penyelesaian peringkat pengawal dan peringkat pandangan.
Transformasi Tahap Pengawal
Pendekatan yang mantap terletak pada mengubah data dalam pengawal. Dengan memanfaatkan fungsi ketulan yang disediakan, kami boleh membahagikan data ke dalam subbarray yang sama, setiap satu mewakili satu lajur:
<code class="javascript">function chunk(arr, size) { var newArr = []; for (var i=0; i<arr.length; i+=size) { newArr.push(arr.slice(i, i+size)); } return newArr; } $scope.chunkedData = chunk(myData, 3);
Data ini kemudiannya boleh diberikan menggunakan ng-ulang bersarang, seperti berikut:
<code class="html"><div class="row" ng-repeat="rows in chunkedData"> <div class="span4" ng-repeat="item in rows">{{item}}</div> </div></code>
Penapisan Tahap Paparan
Sebagai alternatif, penapis boleh digunakan untuk mencapai reka letak yang diingini dalam paparan. Walau bagaimanapun, pendekatan ini bertujuan terutamanya untuk tujuan paparan dan mungkin menghadapi masalah apabila memasukkan elemen input:
<code class="html"><pre class="brush:php;toolbar:false"><div ng-repeat="row in ['a','b','c','d','e','f'] | chunk:3"> <div class="column" ng-repeat="item in row"> {{($parent.$index*row.length)+$index+1}}. {{item}} </div> </div>
Lajur Menegak
Untuk mengagihkan item secara menegak dan bukannya mendatar, sedikit perubahan kepada pendekatan yang disebutkan di atas boleh dibuat:
<code class="html"><div ng-repeat="row in columns"> <div class="column" ng-repeat="item in row"> {{item}} </div> </div></code>
<code class="javascript">var data = ['a','b','c','d','e','f','g']; $scope.columns = columnize(data, 3); function columnize(input, cols) { var arr = []; for(i = 0; i < input.length; i++) { var colIdx = i % cols; arr[colIdx] = arr[colIdx] || []; arr[colIdx].push(input[i]); } return arr; }
Lajur CSS
Satu lagi penyelesaian elegan melibatkan memanfaatkan lajur CSS:
<code class="css">.columns { columns: 3; }
<code class="html"><div class="columns"> <div ng-repeat="item in ['a','b','c','d','e','f','g']"> {{item}} </div> </div></code>
Atas ialah kandungan terperinci Bagaimana untuk mengedarkan data ng-repeat ke dalam lajur menggunakan Bootstrap dalam AngularJS?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!