我有一个使用WebApi和AngularJS在C#.NET中编写的应用程序。
在我的应用程序的某些点上,我使用ENUMS填充了一个带有选项的选择标记,因为由于这些值不在数据库中,所以我觉得不需要创建返回枚举的服务,因为我是使用剃刀页面,所以我可以直接使用枚举。
一切正常,直到我将角度版本更新为1.4.7,比此停止工作,我无法降级角度版本(出于某些企业原因)。
例如,我有这段代码
<div class="col-md-3 col-xs-12">
<label for="qualificacaoCobreJunta" class="col-xs-12 control-label">@IsiCTB.Internationalization.Res.Controls.label_cobre_junta<span class="obrigatorio">*</span></label>
<div class="col-xs-12">
<select class="form-control" id="qualificacao-cobre-junta" name="qualificacaoCobreJunta" ng-model="qualificacao.cobrejunta"
required>
<option value="" id="cobrejunta-0">@IsiCTB.Internationalization.Res.Controls.label_prompt_selecione</option>
<option id="optCobreJuntaCom" value="@IsiCTB.Entities.Enums.ComSem.Com.ToInt()">@IsiCTB.Entities.Enums.ComSem.Com.GetValueString()</option>
<option id="optCobreJuntaSem" value="@IsiCTB.Entities.Enums.ComSem.Sem.ToInt()">@IsiCTB.Entities.Enums.ComSem.Sem.GetValueString()</option>
<option id="optCobreJuntaAmbos" value="@IsiCTB.Entities.Enums.ComSem.Ambos.ToInt()">@IsiCTB.Entities.Enums.ComSem.Ambos.GetValueString()</option>
<option id="optCobreJuntaNA" value="@IsiCTB.Entities.Enums.ComSem.NA.ToInt()">@IsiCTB.Entities.Enums.ComSem.NA.GetValueString()</option>
</select>
<div ng-show="formQualificacaoSubmitted" class="error-form-validation">
<div ng-show="gerenciaQualificacoesSoldador.qualificacaoCobreJunta.$error.required">@IsiCTB.Internationalization.Res.Controls.label_obrigatorio</div>
</div>
</div>
</div>
从WebApi获取数据的代码。
QualificacaoService.get({ id: idQualificacao }, function (data) {
$scope.qualificacao = data;
});
然后返回一个带有一堆属性的JSON对象,如:
{
id: 1,
cobrejunta: 2,
anotherEnumField: 1,
anotherEnumField2: 5,
anotherEnumField3: 2
....
}
如果我在模型中有 qualificacao.cobrejunta =“2”(字符串)设置,则select指向右侧选项,但如果我有 qualificacao.cobrejunta = 2 < / strong>(整数)似乎没什么用。
无论如何要让它再次运行,或者唯一的(最好的)解决方案是克里特岛将要求API的服务,这个API将构建数组而不是返回使用ng-option的那个?
谢谢你们。
答案 0 :(得分:3)
答案 1 :(得分:0)
我认为Angular行为已经随1.4.8版本而改变。我遇到了同样的问题:我将一个值列表组合成一个组合(静态值),并动态分配值以通过控制器进行选择。它不是版本1.3.8的问题,但当选定的值保持空白时它与1.4.8不同。但我可以在视图中显示该值,并且它是正确的。
为我解决这个问题的方法是将静态值转换为包含该值的对象,并将其定义为控制器的开头(在分配值之前)。必须这样做很奇怪,但我没有找到另一种成功的方法。