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

np8igboo  于 2022-10-31  发布在  Angular
关注(0)|答案(1)|浏览(150)

我正在开发一个应用程序,需要处理由品牌、型号和阶段定义的车辆(项目)。下面是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中的整个models数组和我的item.model中的整个phase数组,这在现实中是比Plunker上的例子大得多。为了在我的数据库中保存更轻的项目,我决定只保存我的品牌和型号的标签。我减少了我的项目的重量10。
这样做的问题是,以后当我需要检索保存在select中的项目信息时,我无法检索。如果我将整个数组保存在item.brand和item.models中,我的select可以检索信息并取正确的值。
我的问题是:有没有办法通过只保存标签而不保存整个数组来获得相同的结果?

mv1qrgav

mv1qrgav1#

您可以通过将保存的数据与源数组进行比较来检索它。不幸的是,它需要循环数据并找到匹配的条目。
我编辑了您的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);
};

相关问题