过滤 ng-options 条件 ng-model

Filter ng-options condition ng-model

我正在尝试根据在另一个 select 中编辑的值 select 过滤 select。这些 Common 是有价值的。数据是:

国家

{
  "paisCodigo": "AR",
  "paisNombre": "Argentina",
  "paisVigente": 1
},
{
  "paisCodigo": "CL",
  "paisNombre": "Chile",
  "paisVigente": 1
},
{
  "paisCodigo": "UY",
  "paisNombre": "Uruguay",
  "paisVigente": 1
}

<select name="selectPais" id="selectPais" ng-model="defaultPais" ng-options="pais.paisCodigo as pais.paisNombre for pais in paises track by pais.paisCodigo">
      <option value="">Seleccione país</option>
</select>

城市

{
  "ciuId": 1,
  "ciuNombre": "Santiago",
  "ciuPaisCodigo": "CL",
  "ciuVigente": 1
},
{
  "ciuId": 2,
  "ciuNombre": "Viña del Mar",
  "ciuPaisCodigo": "CL",
  "ciuVigente": 1
},
{
  "ciuId": 3,
  "ciuNombre": "Valparaíso",
  "ciuPaisCodigo": "CL",
  "ciuVigente": 1
},
{
  "ciuId": 4,
  "ciuNombre": "Quilpué",
  "ciuPaisCodigo": "CL",
  "ciuVigente": 1
},
{
  "ciuId": 5,
  "ciuNombre": "Montevideo",
  "ciuPaisCodigo": "UY",
  "ciuVigente": 1
},
{
  "ciuId": 6,
  "ciuNombre": "Buenos Aires",
  "ciuPaisCodigo": "AR",
  "ciuVigente": 1
}

<select name="selectCiudad" id="selectCiudad"  ng-disabled="!defaultPais" ng-model="defaultCiudad" ng-options="ciudad.ciuId as ciudad.ciuNombre for ciudad in ciudades ((paises | filter:{'ciuPaisCodigo' : defaultPais})) track by ciudad.ciuId">
      <option value="">Seleccione ciudad</option>
</select>

这不起作用。我想过滤 select 或城市可能希望按与这些安排相同的值过滤例如国家代码:CL、AR、UY。但我一直没能得到。欢迎任何批评,我是 AngularJS 和 ionic 的新手。

无需批评。你只需要利用 ng-change。

在你的第一个下拉菜单中,还有一个 ng-change。在控制器中创建一个函数来更新您将在第二个下拉列表中使用的数组。

我要快速解决问题...注意我没有将 pais 传递给函数

<select name="selectPais" id="selectPais" ng-model="defaultPais" ng-options="pais.paisCodigo as pais.paisNombre for pais in paises track by pais.paisCodigo" ng-change="updateTheOtherDropdown()">
      <option value="">Seleccione país</option>
</select>

在你的控制器中,放入伪代码。您应该能够使用 $scope.defaultPais

访问所选对象
$scope.updateTheOtherDropdown =function()
{    

在这里您可以使用 $scope.defaultPais 来过滤您的下一个数组。

$scope.ciudades = whatever you filtered;
}