AngularJS - watch不适用于变量

时间:2017-04-05 20:20:04

标签: javascript 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没有工作,甚至没有在调试器上停止)

我清楚了吗?

1 个答案:

答案 0 :(得分:1)

您可以使用佛罗里达州&#39;密钥作为您的密钥和值,然后直接使用选择的模型设置为prov,然后根据所选密钥监听prov更改并设置ciudades:< / p>

&#13;
&#13;
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];
  });
});
&#13;
<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>
&#13;
&#13;
&#13;