0

WebApi と AngularJS を使用して C# .NET で作成されたアプリがあります。

アプリケーションのいくつかの時点で、ENUMS を使用して select タグにオプションを入力します。これは、値がデータベースにないため、かみそりのページを使用しているため、列挙型を返すサービスを作成する必要がないからです。そのため、列挙型を直接使用できます。

angularバージョンを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 (整数) がある場合は何も機能しないようです。

とにかくこれを再び機能させる方法はありますか、または唯一の (最良の) 解決策は、API を要求するサービスを作成することです。この API は配列を構築し、ng-option を使用するためにそれを返しますか?

君たちありがとう。

4

2 に答える 2

0

バージョン 1.4.8 で Angular の動作が変わったと思います。私は同じ問題を抱えていました.コンボ(静的値)に値のリストがあり、コントローラーを介して選択する値を動的に割り当てました。バージョン 1.3.8 では問題ありませんでしたが、1.4.8 では選択した値が空白のままになる場合があります。しかし、ビューに値を表示できます。それは正しいです。

私にとってこれを解決する方法は、その静的な値をその値を含むオブジェクトに変換し、それをコントローラーの先頭で定義することでした (値を割り当てる前に)。そうしなければならないのは奇妙ですが、私は成功への別の方法を見つけられませんでした。

于 2016-01-21T15:43:46.163 に答える