Como fazer o angularJS ng-model trabalhar com objetos em elementos selecionados?
Eu tenho um problema com o ng-model em umselect
elemento ao passar um objeto deoption
elementos. Então, imagine que temos uma matriz de colunas de uma tabela chamadacolumns
(a definição da tabela) e gostaríamos de criar alguns filtros sobre esta definição
var columns = [
{name: 'Account ID', type: 'numeric'},
{name: 'Full name', type: 'text'},
{name: 'Date of birth', type: 'date'},
{name: 'Active', type: 'boolean'}
// and so on
];
var filters = [{}];
HTML:
<div class="form-field" ng-repeat="filter in filters">
<select ng-model="filter">
<option value="" disabled>Choose filter</option>
<option ng-repeat="column in columns" ng-value="column">{{column.name}}</option>
</select>
<input type="text" ng-model="filter.value">
</div>
Como você pode ver, eu gostaria dissofilter
para obter o valor decolumn
e para adicionar dados específicos nele, então, em um determinado momento, meu filtro poderia ser como:
[
{name: 'Account ID', type: 'numeric', value: 123},
{name: 'Active', type: 'boolean', value: 'Yes'}
]
De qualquer forma, não tenho certeza se esta é a maneira de fazer isso, mas gostaria de saber como posso conseguir esse comportamento, sem escrever muito código js no controlador.
Eu fiz algumas soluções para fazer isso usandong-change
, passando ofilter
e acolumn.name
, encontre a coluna nocolumns
array, pegue otype
propriedade, atualize ofilter
, mas eu realmente acho que há uma resposta mais simples para isso.