Mam problem z ng-model na element select
podczas przekazywania obiektu z elementów option
. Więc wyobraź sobie, mamy szereg kolumn z tabeli o nazwie columns
(definicja tabeli) i chcielibyśmy creat niektórych filtrów na tej definicjiJak wykonać kątowy model pracy z obiektami w wybranych elementach?
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>
jak można zobaczyć, chciałabym tego filter
aby uzyskać wartość column
i dodać konkretne dane w nim, więc w pewnym momencie, mój filtr może być tak:
[
{name: 'Account ID', type: 'numeric', value: 123},
{name: 'Active', type: 'boolean', value: 'Yes'}
]
W każdym razie, nie jestem pewny, czy to jest sposób na zrobienie tego, ale chciałbym wiedzieć, w jaki sposób mogę osiągnąć to zachowanie, z tym, że piszę dużo kodu js w kontrolerze.
zrobiłem niektóre obejście, aby to zrobić za pomocą ng-change
, mijając filter
i column.name
, znajdź kolumnę w tablicy columns
, uzyskać własność type
, zaktualizuj filter
, ale naprawdę myślę, że jest prostsza odpowiedź to.
zaktualizowałem że plunker używać 1.1. 5 i nadal działa dobrze. – noj
Hmmm, wierd ... działa na plunkerze, ale nie na mojej lokalnej maszynie. W każdym razie ... dlaczego działa po powiązaniu z 'filter.value', ale nie bezpośrednio na' filter'? Jakoś potrzebuję tej samej struktury co definicja tabeli :) –
Wynika to z zachowania javascript podczas ustawiania wartości w zakresach potomnych. Trzeba to wyjaśnić w komentarzu, więc zobacz [to pytanie] (http://stackoverflow.com/questions/14049480/what-are-the-nuances-of-scope-prototypal-prototypical-inestance-in-angularjs). Aby obejść ten problem, możesz użyć właściwości '$ index' właściwości pętli ng-repeat, aby ustawić wartość. Zobacz zaktualizowany [plunker] (http://plnkr.co/edit/C3ojySE0x6XbDwHkCD7u?p=preview). – noj