2017-04-05 2 views
0

Dieser Code funktioniert nicht und ich kann nicht sagen, warum.AngularJS - Uhr arbeitet nicht auf Variable

HTML

<select id="provincia" class="form-control" ng-model="ciudades" ng-options="provincia for (provincia, ciudades) in provincias"> 
<option ng-model="valor_ciudad" value=''>Elegir</option> 
</select> 

JS

$scope.$watch('ciudades', function(newval, oldval){ 
     debugger; 
     if (newval){ 
      $scope.prov = newval; 
     } 
    }); 

Was soll ich tun? Ich versuche, den vom Benutzer gewählten Wert zu erhalten, weil die Variable ciudades ein Array von Werten hat.

$scope.provincias = {Florida:['Miami', 'Orlando']} 

Wenn der Benutzer Florida nimmt, dann wird $ scope.ciudades sein [ 'Miami', 'Orlando']. Was ich wissen muss, ist, wenn der Benutzer Florida oder eine andere Stadt wählt. (.watch hat nicht funktioniert, nicht einmal auf Debugger gestoppt)

Habe ich mich klar gemacht?

+0

Bessere 'ng-change' dafür zu verwenden, [Read this] (https://docs.angularjs.org/guide/scope) (_SCOPE $ Uhr Leistung Considerations_) –

+0

Sie die objectEquality auf true gesetzt könnte . https://docs.angularjs.org/api/ng/type/$rootScope.Scope#$watch –

Antwort

1

können Sie die ‚Florida‘ verwenden Schlüssel als Schlüssel und Wert und auf die prov direkt mit den ng-Modells wählen Sie dann, hören für prov Änderungen und setzen ciudades basierend auf dem ausgewählten Schlüssel:

var app = angular.module('app', []); 
 
app.controller('AppCtrl', function($scope, $compile, $timeout) { 
 
    $scope.provincias = { 
 
    Florida: ['Miami', 'Orlando'] 
 
    }; 
 
    $scope.$watch('prov', function(newval, oldval){ 
 
    $scope.ciudades = $scope.provincias[newval]; 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 

 
<div ng-app="app" ng-controller="AppCtrl"> 
 
    <select ng-model="prov" ng-options="key as key for (key, value) in provincias"> 
 
    <option ng-model="valor_ciudad" value=''>Elegir</option> 
 
    </select> 
 
    <br> 
 
    $scope.prov: {{prov}}<br> 
 
    $scope.ciudades: {{ciudades}}<br> 
 
</div>

+0

Sie sind der Mann! Ich arbeite immer noch nicht an meinem Code, indem ich ng-change und deinen Code benutze und es funktioniert. Vielen Dank –

Verwandte Themen