2013-04-21 8 views
5

Mam dwa pola wyboru, drugie pole wyboru aktualizuje się, gdy zmienia się pierwsze pole wyboru.Jak wywołać zmianę Ng w zaznaczeniu, które zawiera powtórzenie ng

<label>Region</label> 
<select ng-model="region" 
     ng-change="clear(1)" 
     ng-options="l.region for l in locations" 
></select> 
<br /> 
<label>Country</label> 
<select ng-model='country' 
     ng-change="clear(2)" 
     ng-options="c.country for c in region.countries" 
></select> 

Moje lokalizacje to obiekt JSON, który wygląda tak:

[ 
    {region: "Europe", countries: [{country: "France"}, {country: "UK"}/*, ...*/]}, 
    {region: "Africa", countries: [{country: "Cameroon"}, {country: "Algeria"}]} 
    /*, ...*/ 
] 

To wszystko działa dobrze w ten sposób.

Zaczyna być skomplikowana, gdy chcę ustawić wartość pierwszego pola wyboru na Europę i chcę wywołać zdarzenie ng-change w drugim polu wyboru.

Każdy pomysł, jak to zrobić?

Odpowiedz

5

Chcesz wywołać zdarzenie ng-change w drugim polu wyboru, co jest odpowiednikiem scenariusza, gdy model region został zmieniony. Możesz więc użyć obserwatora, aby to osiągnąć.

$scope.$watch('region', function (newValue, oldValue) { 
    console.log(newValue, oldValue); 
}) 
+0

Mam to umieścić w kontrolerze, czytałem gdzieś to jest zła praktyka. zakres. $ watch są dla dyrektyw, prawda? – Ant

+2

Twoja stara wartość i nowa wartość są przełączane, po prostu przetestowano je. –

+0

@ J-Dizzle Nie. Kiedy odpowiadałem na pytanie, parametr był prawidłowy. Później zespół angularski zamienił je. – zsong

1

Dlaczego chcesz wywołać zdarzenie onchange, skoro możesz po prostu ręcznie wywołać funkcję ze swojego kontrolera? Nie zapominaj, że możesz ręcznie ustawić wartość właściwości, którą określiłeś w modelu ng, i że jej wartość zostanie odzwierciedlona w elemencie select.

+0

Kiedy ręcznie ustawić wartość w ng-modelu, zdarzenie ng-zmiana nie zostanie uruchomiony (patrz http://docs.angularjs.org/api/ng.directive:ngChange). Nie rozumiem, co masz na myśli przez "zadzwoń do funkcji kontrolera". – Ant

Powiązane problemy