Acho os tutoriais do AngularJS difíceis de entender; este está me orientando na criação de um aplicativo que exibe telefones. Estou na etapa 5 e, como experiência, pensei em tentar permitir que os usuários especifiquem quantos gostariam de mostrar. A visualização é assim:
<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>
Adicionei esta linha em que os usuários podem inserir quantos resultados desejam:
How Many: <input ng-model="quantity">
Aqui está o meu controlador:
function PhoneListCtrl($scope, $http) {
$http.get('phones/phones.json').success(function(data) {
$scope.phones = data.splice(0, 'quantity');
});
$scope.orderProp = 'age';
$scope.quantity = 5;
}
A linha importante é:
$scope.phones = data.splice(0, 'quantity');
Posso codificar em um número para representar quantos telefones devem ser mostrados. Se eu colocar 5
, 5 serão mostrados. Tudo o que quero fazer é ler o número nessa entrada a partir da visualização e colocá-lo na data.splice
linha. Eu tentei com e sem aspas, e nem trabalho. Como eu faço isso?
fonte
limitTo
mas forneço um botão "carregar mais" para aumentar o limite. Isso só deve ser exibido se houver mais registros disponíveis.filter:query
?query
vem deSearch: <input ng-model="query">
Um pouco tarde para a festa, mas isso funcionou para mim. Espero que alguém ache útil.
fonte
ng-if="$index < 6"
me permitiu mostrar apenas os 6 primeiros, mantendo toda a matriz pesquisável (eu tenho um filtro combinado com um campo de pesquisa).ng-if
neste caso, não renderizará o elemento DOM do repetidor cujo valor$index
é maior que3
. se$index
no repetidor0, 1, or 2
, a condição étrue
e os nós DOM são criados.ng-if
difereng-hide
no sentido de que os elementos não são adicionados ao DOM.armazene todos os seus dados inicialmente
A EDIT acidentalmente colocou o relógio fora do controlador, que deveria estar dentro.
fonte
aqui está uma outra maneira de limitar seu filtro em html, por exemplo, eu quero exibir 3 listas de cada vez do que usarei limitTo: 3
fonte
Isso funciona melhor no meu caso, se você tiver um objeto ou matriz multidimensional. Ele mostrará apenas os primeiros itens, outros serão apenas ignorados em loop.
Mude 5 para o que você deseja.
fonte
Use o filtro limitTo para exibir um número limitado de resultados em ng-repeat.
fonte
Outra (e acho melhor) maneira de conseguir isso é realmente interceptar os dados. limitTo está bom, mas e se você estiver limitando a 10 quando sua matriz realmente contém milhares?
Ao ligar para o meu serviço, simplesmente fiz o seguinte:
Isso limita o que é enviado para a exibição, portanto, deve ser muito melhor para o desempenho do que fazer isso no front-end.
fonte
data
, isso não é mais eficiente do que usar limitTo.