AngularJS:选择基于保存的信息

时间:2016-06-28 10:01:13

标签: angularjs select options

我正在开发一个应用程序,我必须处理由其品牌,型号和阶段定义的车辆(物品)。以下是Plunker的简单版本:http://plnkr.co/edit/gA9mzMde4i9hpDfeOdWe

我根据品牌列表创建了3个选择。每个品牌都有一个模型列表,每个模型都有一个阶段列表。

<select ng-options="brand as brand.label for brand in list track by brand.id" ng-model="itemTemp.brand" ng-change="itemTemp.model=''; itemTemp.phase='';">
  <option value="">Choose a brand</option>
</select>

当我在数据库中保存信息时,我意识到我将整个模型数组保存在我的item.brand和我的item.model中的整个阶段数组中,这实际上比Plunker上的示例更大。为了在我的数据库中保存较轻的项目,我决定只保存我的品牌和型号的标签。我将物品的重量减轻了10倍。

这样做的问题是,稍后当我需要检索我在选择中保存的项目的信息时,我无法做到。如果我将整个数组保存在item.brand和item.models中,我的选择可以检索信息并获取正确的值。

我的问题是:通过仅保存标签而不是整个数组,有没有办法获得相同的结果?

1 个答案:

答案 0 :(得分:0)

您可以通过将保存的数据与源数组进行比较来检索保存的数据。 不幸的是,它需要循环数据并找到匹配的条目。

我已编辑了您的Plunker:http://plnkr.co/edit/dC1hMD2ZL79z37kPHAzE?p=preview

$scope.restoreItem = () => {
    $scope.itemTemp.brand = findInArray($scope.list, $scope.itemSaved.brand, 'label');
    $scope.itemTemp.model = findInArray($scope.itemTemp.brand.models, $scope.itemSaved.model, 'label');
    $scope.itemTemp.phase = findInArray($scope.itemTemp.model.phases, $scope.itemSaved.phase);
};