2013-08-30 13 views

Odpowiedz

21

Właściwie jest to prosty fix, mają myStyle być bardziej myColor rodzaju deklaracji i na ng-style mieć wyrażenia {{'color':myColor}}:

<select ng-model="myColor"> 
    <option value="">none</option> 
    <option value="red">Red</option> 
    <option value="green">Green</option> 
</select> 

<div ng-style="{'color':myColor}"> 
    <p>Text to change color</p> 
</div> 

Nie ma potrzeby na ng-change funkcja w instancji THIS.

Working Example


Edycja wyjaśnienie:

Wartość w wybranej opcji nie jest kanciasty dyrektywa tak myStyle jest ustawiony na dosłownie "{color: 'czerwony'}" nie JavaScript Object{"color":"red"}, którego Angular szuka i może parsować w ng-style.

Ponieważ literalna wartość "{color: 'red'}" wygląda jak obiekt, nie zauważysz różnicy w batarangu. Ale jeśli uruchomisz console.log() zobaczysz różnicę.

Ustaw przykład jeden, a następnie ustawić na przykład 2 czerwone i zmienić funkcję clearFilter dodając dwa dzienniki i spojrzeć na wyjściu, a zobaczysz co mam na myśli:

$scope.clearFilter = function() { 
    console.log('myStyle1', $scope.myStyle1); 
    console.log('myStyle', $scope.myStyle); 
    $scope.query = ''; 
    $scope.orderProp = ''; 
    $scope.myColor = ''; 
}; 
+0

Dzięki, zacząłem tylko takie podejście. W moim przykładzie, w batarang myStyle został poprawnie ustawiony na zmianę wyboru, ale nadal kolor nie zmieniał się w przykładzie 2. Czy możesz mi powiedzieć, dlaczego? – Jaimin

+0

Zobacz powyżej, to jest to, co moim zdaniem się dzieje – jnthnjns