Saya menemukan tutorial AngularJS sulit dimengerti; yang satu ini sedang menuntun saya membangun aplikasi yang menampilkan telepon. Saya pada langkah 5 dan saya pikir sebagai percobaan saya akan mencoba untuk memungkinkan pengguna untuk menentukan berapa banyak mereka ingin ditampilkan. Tampilannya seperti ini:
<body ng-controller="PhoneListCtrl">
<div class="container-fluid">
<div class="row-fluid">
<div class="span2">
<!--Sidebar content-->
Search: <input ng-model="query">
How Many: <input ng-model="quantity">
Sort by:
<select ng-model="orderProp">
<option value="name">Alphabetical</option>
<option value="age">Newest</option>
</select>
</div>
<div class="span10">
<!--Body content-->
<ul class="phones">
<li ng-repeat="phone in phones | filter:query | orderBy:orderProp">
{{phone.name}}
<p>{{phone.snippet}}</p>
</li>
</ul>
</div>
</div>
</div>
</body>
Saya telah menambahkan baris ini di mana pengguna dapat memasukkan berapa banyak hasil yang ingin mereka tampilkan:
How Many: <input ng-model="quantity">
Ini controller saya:
function PhoneListCtrl($scope, $http) {
$http.get('phones/phones.json').success(function(data) {
$scope.phones = data.splice(0, 'quantity');
});
$scope.orderProp = 'age';
$scope.quantity = 5;
}
Garis yang penting adalah:
$scope.phones = data.splice(0, 'quantity');
Saya dapat membuat kode dalam angka untuk menunjukkan berapa banyak ponsel yang harus ditampilkan. Jika saya memasukkan 5
, 5 akan ditampilkan. Yang ingin saya lakukan adalah membaca angka dalam input dari tampilan, dan memasukkannya ke dalam data.splice
baris. Saya sudah mencoba dengan dan tanpa tanda kutip, dan tidak berhasil. Bagaimana saya melakukan ini?
sumber
limitTo
tetapi memberikan tombol "memuat lebih banyak" untuk meningkatkan batas. Ini hanya akan ditampilkan jika lebih banyak catatan tersedia.filter:query
?query
berasal dariSearch: <input ng-model="query">
Sedikit terlambat ke pesta, tapi ini berhasil untukku. Semoga orang lain merasakan manfaatnya.
sumber
ng-if="$index < 6"
memungkinkan saya untuk hanya menampilkan 6 pertama sekaligus menjaga seluruh array dapat dicari (saya memiliki filter yang dikombinasikan dengan bidang pencarian).ng-if
dalam hal ini, tidak akan membuat elemen DOM dari pengulang yang$index
lebih besar dari3
. jika$index
dalam repeater adalah0, 1, or 2
, kondisinyatrue
dan node DOM dibuat.ng-if
berbeda daring-hide
dalam arti elemen tidak ditambahkan ke DOM.simpan semua data Anda pada awalnya
EDIT tidak sengaja meletakkan arloji di luar pengontrol yang seharusnya ada di dalamnya.
sumber
di sini adalah cara lain untuk membatasi filter Anda pada html, misalnya saya ingin menampilkan 3 daftar pada waktu daripada saya akan menggunakan limitTo: 3
sumber
Ini berfungsi lebih baik dalam kasus saya jika Anda memiliki objek atau array multi-dimensi. Ini hanya akan menampilkan item pertama, yang lainnya hanya akan diabaikan dalam lingkaran.
Ubah 5 pada apa yang Anda inginkan.
sumber
Gunakan filter limitTo untuk menampilkan hasil dalam jumlah terbatas di ng-repeat.
sumber
Cara lain (dan saya pikir lebih baik) untuk mencapai ini adalah benar-benar mencegat data. limitTo baik-baik saja tetapi bagaimana jika Anda membatasi hingga 10 ketika array Anda sebenarnya berisi ribuan?
Saat menelepon layanan saya, saya hanya melakukan ini:
Ini membatasi apa yang dikirim ke tampilan, jadi harus jauh lebih baik untuk kinerja daripada melakukan ini di front-end.
sumber
data
sekitar, ini tidak lebih efisien daripada menggunakan limitTo.