“选择表单”不与模型同步

时间:2014-03-17 15:38:59

标签: angularjs

这是我的模板:

<div class="form-group" 
  ng-repeat="recipeIngredient in recipes.currentRecipe._ingredients">
  <label class="col-sm-2 control-label">Ingredient {{ $index + 1 }}</label>
  <div class="col-sm-10 form-inline" role="form">
    <input 
      type="text" 
      class="form-control" 
      placeholder="quantity" 
      ng-model="recipeIngredient.quantity"
    >
    <input 
      type="text" 
      class="form-control" 
      ng-model="recipeIngredient._unit"
    >
    <select 
      class="form-control" 
      ng-model="recipeIngredient._unit" 
      ng-options="unit._id for unit in units" 
    />
    <select 
      ng-model="recipeIngredient._ingredient" 
      class="form-control" 
      ng-model="recipeIngredient._ingredient" 
      ng-options="ingredient._id for ingredient in ingredients" 
    />
    <button 
      type="button" 
      class="btn btn-default btn-xs glyphicon glyphicon-remove" 
      ng-click="recipes.currentRecipe.removeRecipeIngredient($index)">
    </button>
  </div>
</div>

我想显示currentRecipe中列出的成分 如果我使用:

<input type="text" class="form-control" ng-model="recipeIngredient._unit">

我可以看到_unit的价值 但是为什么选择表单根本没有显示recipeIngredient._unit的当前值?

 <select 
   class="form-control" 
   ng-model="recipeIngredient._unit" 
   ng-options="unit._id for unit in units" 
 />

我已验证_unit是单位列表的一部分 如果我将选择框的值更改为某个值,则输入文本显示&#34;对象&#34;,这意味着模型的实际值是单位对象而不是unit._id文本

ng-options="unit._id for unit in units"`

请告诉我您是否需要其他代码

1 个答案:

答案 0 :(得分:0)

我发现当我使用时:

ng-options="unit._id for unit in units"

下拉框中显示的文字为unit._id,但ng-model将是单位中的对象,而不是文字显示的内容! 为了纠正我的问题,我写得像这样:

<select ng-model="recipeIngredient._unit" class="form-control">
<option ng-repeat="unit in getId(units, '_id')">{{unit}}</option>
</select>

getId是从_id

返回units列表的函数