Eu escrevi uma função de filtro que retornará dados com base no argumento que você está passando. Eu quero a mesma funcionalidade no meu controlador. É possível reutilizar a função de filtro em um controlador?
Isto é o que eu tentei até agora:
function myCtrl($scope,filter1)
{
// i simply used the filter function name, it is not working.
}
angularjs
angular-filters
ng-controller
sumanth
fonte
fonte
Respostas:
Injete $ filter no seu controlador
Onde quer que você queira usar esse filtro, use-o assim:
Se você deseja passar argumentos para esse filtro, faça-o usando parênteses separados:
Onde
arg1
está a matriz na qual você deseja filtrar earg2
é o objeto usado para filtrar.fonte
var anyNumber = $filter('number')(12.222222, 2);
deseja12.22
.$filter("currency")(price, "$", 2)
se você tivesse um preço = 200, essa expressão retornaria "$ 200,00".$filter('filtter1')
(2 t). No entanto, se você injetar ofiltter1Filter
Angular reclamará imediatamente que a dependência não existe.A resposta fornecida por @Prashanth está correta, mas existe uma maneira ainda mais fácil de fazer o mesmo. Basicamente, em vez de injetar a
$filter
dependência e usar uma sintaxe incômoda de invocá-la ($filter('filtername')(arg1,arg2);
), pode-se injetar a dependência sendo: nome do filtro mais oFilter
sufixo.Tomando o exemplo da pergunta que se poderia escrever:
Deve-se observar que você deve anexar
Filter
ao nome do filtro, independentemente da convenção de nomenclatura que estiver usando: foo é referenciado por chamadafooFilter
fooFilter é referenciado por chamada
fooFilterFilter
fonte
Usando o código de exemplo a seguir, podemos filtrar a matriz no controlador angular por nome. isso é baseado na descrição a seguir. http://docs.angularjs.org/guide/filter
this.filteredArray = filterFilter (this.array, {nome: 'Igor'});
JS:
HTML
fonte
Aqui está outro exemplo de uso
filter
em um controlador Angular:Simples, ei?
fonte
Existem três maneiras possíveis de fazer isso.
Vamos supor que você tenha o seguinte filtro simples, que converte uma string em maiúscula, com um parâmetro apenas para o primeiro caractere.
Diretamente através
$filter
Nota: isso lhe dá acesso a todos os seus filtros.
Atribuir
$filter
a umvariable
Esta opção permite que você use o
$filter
tipo afunction
.Carregue apenas um específico
Filter
Você pode carregar apenas um filtro específico anexando o nome do filtro
Filter
.Qual deles usa tem preferência pessoal, mas eu recomendo o terceiro, porque é a opção mais legível.
fonte
fonte
Eu tenho outro exemplo que fiz para o meu processo:
Eu recebo uma matriz com o valor-Description como este
em meu Filters.js:
Então, um teste var (controller):
fonte
AngularJs permite usar filtros dentro do modelo ou dentro do controlador, diretiva etc.
no modelo, você pode usar esta sintaxe
e no controlador interno, você pode usar a injeção do serviço $ filter
Se você precisar de mais com o exemplo de demonstração, aqui está um link
Exemplos e demo de filtro do AngularJs
fonte
Há outra maneira de avaliar filtros que espelham a sintaxe das visualizações. A invocação é complicada, mas você pode criar um atalho para ela. Gosto que a sintaxe da string seja idêntica à que você teria em uma exibição. Se parece com isso:
fonte
Parece que ninguém mencionou que você pode usar uma função como arg2 em $ filter ('filtername') (arg1, arg2);
Por exemplo:
fonte
Um exemplo simples de data usando $ filter em um controlador seria:
Conforme explicado aqui - https://stackoverflow.com/a/20131782/262140
fonte
Use o código abaixo se quisermos adicionar várias condições, em vez de um valor único no filtro angular javascript:
fonte
Antes de tudo, injete o filtro $ no seu controlador, certificando-se de que ngSanitize esteja carregado no seu aplicativo e, posteriormente, no uso do controlador, da seguinte maneira:
Sempre verifique os documentos do angularjs
fonte
se você deseja filtrar o objeto no controlador, tente isso
Isso retornará o objeto filtrado de acordo com a condição if
fonte
Reutilizando um filtro Angular.js - Exibir / Controlar
Esta solução está cobrindo a reutilização de filtros angulares. Essa é outra maneira de filtrar dados, e o Google me trouxe aqui quando eu precisei; e eu gosto de compartilhar
Caso de Uso
Se você já está filtrando, digamos em ng-repeat na sua visualização (como abaixo), então você pode ter definido um filtro no controlador da seguinte maneira. E então você pode reutilizar como nos exemplos finais.
Exemplo de uso de filtro - repetição filtrada na exibição
Exemplo de definição de filtro angular
Portanto, o conceito aqui é que você já está usando um filtro criado para sua visualização e, em seguida, percebe que também gostaria de usá-lo em seu controlador.
Utilização da função de filtro no exemplo 1 do controlador
Utilização da função de filtro no controlador Exemplo 2
Mostrar um botão apenas se nenhuma duplicata for encontrada, usando o filtro anterior.
Botão Html
Botão Mostrar / Ocultar
Alguns podem achar essa versão da filtragem fácil, e é uma opção do Angular.js.
O parâmetro comparador opcional "true" usado na visualização e na chamada da função $ filter especifica que você deseja uma comparação estrita. Se você omitir, os valores podem ser pesquisados em várias colunas.
https://docs.angularjs.org/api/ng/filter/filter
fonte