2

ng-model と ng-selected で問題が発生しました。最初は ng-model は null で、正しい値が選択されています。したがって、フォームを送信すると:

{ resolution : undefined, desiredFps : 30 }

そして、それは間違っています。

そのため、属性<select>に基づいて選択された値を取得するモデルが必要です。ng-selected選択した値を更新し、その値でモデルを更新する正しい方法は何ですか?

<form novalidate name="preferencesForm" 
                 ng-submit="submitPreferencesForm(BEPreferencesForm)"
                 ng-controller="UserPreferencesFormController">
   <label for="resolution">Choose the resolution : </label>
   <br/>
   <select name="resolution" id="resolution"
           ng-model="BEPreferencesForm.resolutionId"
           ng-change="buttonDisabled = False">
      <option value="1" ng-selected="user.screenWidth ==  800 && user.screenHeight == 600">800x600</option>
      <option value="2" ng-selected="user.screenWidth == 1024 && user.screenHeight == 768">1024x768</option>
      <option value="3" ng-selected="user.screenWidth == 1280 && user.screenHeight == 720">1280x720</option>
      <option value="4" ng-selected="user.screenWidth == 1280 && user.screenHeight == 768">1280x768</option>
      <option value="5" ng-selected="user.screenWidth == 1360 && user.screenHeight == 768">1360x768</option>
      <option value="6" ng-selected="user.screenWidth == 1600 && user.screenHeight == 900">1600x900</option>
      <option value="7" ng-selected="user.screenWidth == 1768 && user.screenHeight == 992">1768x992</option>
      <option value="8" ng-selected="user.screenWidth == 1920 && user.screenHeight == 1080">1920x1080</option>
   </select>
</form>
4

2 に答える 2

0

ディレクティブAngularを使用する方法があります。ng-options簡単な例:

<select ng-model="BEPreferencesForm.resolutionId"
        ng-options="item.id as item.name for item in items">
</select>

コントローラーで:

$scope.items = [
    { id: 1, name: '1024x768' },
    { id: 2, name: '1280x768' }
];

// Resolution with id = 2 will be selected by default:
$scope.BEPreferencesForm = {
    resolutionId: 2
};
于 2015-06-29T19:51:26.763 に答える
0

ドキュメントをご覧ください: https://docs.angularjs.org/api/ng/directive/select

ng-model は、選択時にオプション値を取ります。画面解像度が 800x600 の場合、BEPreferencesForm.resolutionId は 1 になります。

于 2015-06-29T19:56:19.683 に答える