AngularJS: Select 中的选项基于保存的信息

AngularJS: Option in a Select based on saved informations

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

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

<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。

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

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

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

我已经编辑了你的 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);
};