Jestem ogromnym AngularJS n00b i znajduję nawet tutorials trudny do zrozumienia. Ten samouczek prowadzi mnie przez budowanie aplikacji wyświetlającej telefony. Jestem na step 5 i pomyślałem, że jako eksperyment chciałbym zezwolić użytkownikom na określenie, ile chcieliby być wyświetleni. Widok wygląda następująco:ngRepeat - ograniczenie liczby wyświetlanych wyników
<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>
Dodałem tę linię, aby użytkownicy mogli wejść ile wyniki chcą pokazany:
How Many: <input ng-model="quantity">
Oto mój kontroler:
function PhoneListCtrl($scope, $http) {
$http.get('phones/phones.json').success(function(data) {
$scope.phones = data.splice(0, 'quantity');
});
$scope.orderProp = 'age';
$scope.quantity = 5;
}
Ważną linia to:
$scope.phones = data.splice(0, 'quantity');
Mogę zakodować kod w liczbie, aby pokazać ile telefonów powinno być pokazanych. Jeśli włożę 5, pojawi się 5. Wszystko, co chcę zrobić, to odczytać numer z tego wejścia z widoku i umieścić go w wierszu data.splice. Próbowałem z cytatami i bez nich, a także nie pracowałem. Jak mam to zrobic?
Warto wskazać - i oszczędzić komuś jeszcze kilka minut - że jeśli używasz "track by" MUSI być ostatni po filtrach. –
Czy istnieje sposób na uzyskanie liczby dostępnych elementów przy użyciu filtru i limitu? Chciałbym użyć 'limitTo', ale proszę podać przycisk" załaduj więcej ", aby zwiększyć limit. Powinno to być wyświetlane tylko wtedy, gdy dostępnych jest więcej rekordów. –
@ TimBüthe Wypróbuj to rozwiązanie: http://stackoverflow.com/a/19665313/1095616 – Stewie