O componente gumga-many-to-one-ng é utilizado para filtrar uma lista de registros dinâmicamente. Ele também permite adicionar um registro caso a busca retorne uma lista vazia e visualizar os atributos do registro selecionado.
// npm
npm i gumga-many-to-one-ng --save
// bower
bower install gumga-many-to-one-ng --save
// HTML
<script src="node_modules/gumga-many-to-one-ng/dist/gumga-many-to-one.min.js"></script>
// ou
<script src="bower_components/gumga-many-to-one-ng/dist/gumga-many-to-one.min.js"></script>
<form name="manytoone">
<gumga-many-to-one
value="produto"
list="produtos"
search-method="getSearch(param)"
field="nome"
authorize-add="false"
async="false"
display-info="false">
<match>
<div>{{match.model.nome}}</div>
</match>
</gumga-many-to-one>
</form>
angular.module('app', ['ui.bootstrap', 'gumga.manytoone'])
.controller('Ctrl', function($scope){
$scope.produtos = [
{ nome: 'Notebook Acer Aspire', id: 1 },
{ nome: 'Motorola Moto X (2a Geração) 32GB', id: 2 },
{ nome: 'Smart TV LED 43" Samsung', id: 3 },
{ nome: 'Ar Condicionado Split 7000 BTU/s', id: 4 }
];
$scope.produto = $scope.produtos[1];
// Este método precisa ser assíncrono
$scope.getSearch = function(param){
return $q(function(resolve){
var arr = $scope.produtos.filter(function(produto){
return produto.nome.indexOf(param) != -1;
})
resolve(arr);
})
};
})
| Parâmetro | Tipo | Requerido | Descrição |
|---|---|---|---|
| value | Object |
Sim | Binding com o registro selecionado na lista. |
| list | Array |
Sim | Lista dos registros que serão buscados. |
| field | String |
Sim | Atributo do registro que está sendo procurado e o que estará na lista. |
| description | String |
Não | atributo de uma possível descrição. |
| search-method | Function |
Sim | Busca assíncronasearch-method="getSearch(param)". |
| authorize-add | Boolean |
Não | Mostrar o botão de adicionar um registro caso a busca não tenha retornado nenhum registro. |
| async | Boolean |
Não | Controle para o post-method, caso true, faça o post, se false fará apenas o push. |
| post-method | Function |
Não | Dependendo do parâmetro async, chamará a função com o parâmetro post-method="post(value)" e caso o parâmetro async não esteja presente ou seja falso, fará um push na lista. |
| disabled | Boolean |
Não | Habilitar ou desabilitar o componente. |
| async | Boolean |
Não | Controle para o post-method, caso true, faça o post, se false fará apenas o push. |
| display-info | Boolean |
Não | Mostrar o botão agrupado ao input e ícones na lista de resultados, que mostra os dados do resultado. |
| on-select | Function |
Não | Executada quando o usuário selecionar um resultado, o parâmetro value é obrigatório. |
| tab-seq | Number |
Não | Equivalente ao tabindex, foi usado tabseq para que o elemento many-to-one, não fique na lista de tabindex. |