Forms 如何使用来自简单关系数据库模型的数据进行选择输入

Forms 如何使用来自简单关系数据库模型的数据进行选择输入,forms,angularjs,Forms,Angularjs,我正在使用插入API的Angularjs,该API从mysqlk普通关系数据库检索数据 假设我的bdd中有一个简单的数据模型: table car: id, type_id table type: id, label 我有一个API,它从DB检索数据,从DB获取汽车列表和静态标签: http://myapi/car/ response : {[{id:1, type_id:2}, {id:2, type_id:3}]} http://myapi/carstaticla

我正在使用插入API的Angularjs,该API从mysqlk普通关系数据库检索数据

假设我的bdd中有一个简单的数据模型:

table car:
  id,
  type_id

table type:
  id,
  label
我有一个API,它从DB检索数据,从DB获取汽车列表和静态标签:

http://myapi/car/
response :
   {[{id:1, type_id:2}, {id:2, type_id:3}]}

http://myapi/carstaticlabel/
response :
   {[{id:1, label:convertible}, {id:2, label:limousine}, {id:3, label:pickup}]}
我的目标是首先显示带有类型标签的汽车列表,然后打开一个对话框,能够显示带有所选汽车预加载值的表格:

渲染的汽车列表:

1 convertible
2 pickup
id为1的已编辑汽车的渲染表单: 选择车辆类型:

<select>
  <option value="1">convertible</option>
  <option value="2" selected="selected">limousine</option>
  <option value="3">pickup</option>
</select>
然后我只需在表单中赋值:car.id和car['type']['label']

问题:每辆车将包含重复信息(标签)>>膨胀信息

对于编辑表单: 我将所选汽车的json传递给表单并设置默认值:

<p>type: <select ng-model="car.type"  ng-options="type.label for type in type_list" required></select></p>
类型:

我的问题是:

当我提交表单时,我没有直接获取type_id,而是获取car.type对象,因此我需要痛苦地将其转换为id以发布到数据库中。 要转换,我必须进入car.type对象并检索其中的对象,然后检索其id。。。非常不公平


解决方案2

通过使用数组使内部的“连接”具有角度

问题:以后很难在表单中设置默认值


我迷路了,实现这项简单任务的最佳实践通常是什么?

您应该对数组数据源使用语法。您的示例具有复杂的数据结构,即对象数组。所以你需要这样的东西:

<select ng-model="selectedId"
        ng-options="x.id as x.label for x in response">
</select>


我创建了一个小示例来演示建议的解决方案。

您是否尝试过使用ng的高级部分选项,该选项允许您在对象中定义一个键以及一个标签,例如
标签(键、值)
我尝试过,但在获取数据方面仍然存在问题。现在,我终于在type table对象上使用了角度过滤器来呈现“ID值”。但我相信这不是最好的办法。但它至少起作用了。谢谢!我认为它在过去不起作用,因为我使用的是angular版本。现在,在1.2中,这是肯定的。对于某些重复值,是否有其他方法最多5次,然后创建新数组并从数组中删除该值?我有这样的数组:[“info.specificAllergy”,“info.specificAllergy”,“info.specificAllergy”,“info.specificAllergy”,“info.existingMedicalCondition”,“info.existingMedicalCondition”,“info.existingMedicalCondition”,“info.existingMedicalCondition”,“info.existingMedicalCondition”]我想要:[“info.specificAllergy”,“info.existingMedicalCondition”]但如果“info.existingMedicalCondition”仅是我想要的四倍[“info.specificAllergy”]
<select ng-model="selectedId"
        ng-options="x.id as x.label for x in response">
</select>