2017-04-05 86 views
0

此代码无法正常工作,我无法说明原因。AngularJS - 手表不适用于变量

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; 
     } 
    }); 

我想要什么呢?我正在尝试获取用户选择的值,因为变量ciudades具有一组值。

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

如果用户挑选佛罗里达州,然后$ scope.ciudades会[ '热火', '魔术']。我需要知道的是,如果用户选择佛罗里达或其他城市。 (.watch没有工作,甚至没有停在调试器上)

我已经明确了吗?

+0

最好使用'NG-change'为[阅读](https://docs.angularjs.org/guide/scope)(_Scope $腕表性能Considerations_) –

+0

您可以在objectEquality设置为true 。 https://docs.angularjs.org/api/ng/type/$rootScope.Scope#$watch –

回答

1

您可以使用“佛罗里达”键为您的键和值,并设置为prov直接与选择的NG-模型,然后,听prov的变化,并根据所选择的关键设定ciudades

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

你是男人!我仍然使用ng-change和你的代码,并且它正在工作。谢谢 –