1

JSON呼び出しに基づいて、選択の値と表示名を設定しています。同じ呼び出しで、ネストされた配列から引き出して、既定のアカウント値を取得しています (存在する場合)。そのため、そのデフォルトのアカウント値を保持しているスコープがあり、選択が入力されていますが、私の人生では、値を持つ配列内のオブジェクトに適用する選択属性を取得する方法がわかりませんこれはデフォルト値に対応します。

基本的に、デフォルトのアカウント ID が配列に存在する場合、オプションに「選択済み」を適用したいだけです。

さらに、フォームコレクション機能に関連付けられているため、選択の ng-model を変更できません。

また、私は ng-repeat と ng-options の使用にオープンですが、繰り返しでそれを理解できなかったため、オプションパラダイムに移動しました。

どんな援助でも感謝します! HTML:

<select class="form-control" id="authQAccount" name="authQAccount" ng-model="authFields.accountID" ng-init ng-options="item as item.name for item in accounts track by item.ID" ng-selected="$scope.defaultAcct" required>
    </select>

私のコントローラーで:

$http.get('/api/assessment/authorize').success(function(data, status, headers, config) {
    $scope.content = data.data;
    //Pop the defaults and user options
    $scope.languages = [];
    angular.forEach(data.data.languages, function(value, key) {
          $scope.languages.push(value);
    });
    $scope.accounts = [];
    angular.forEach(data.data.accounts, function(value, key) {
          $scope.accounts.push(value);

    }); 

    $scope.defaultAcct = data.data.defaultAccount;

私が得ているデータ:

"data": {
    "defaultAccount": "6481004",
    "defaultLanguage": "en_us",
    "defaultAddonBody": "Test Email for Default",
    "accounts": [{
        "ID": "6481004",
        "name": " ABC Company, Inc.            "
    }, {
        "ID": "6481619",
        "name": "EDF Company - Personal                "
    }
4

1 に答える 1

1

ng-selected要素に対してのみ機能し、要素自体には機能しoptionません。selectが一致するアイテムに設定されていないng-options場合、でそのアイテムを選択する方法はありません。ng-modelselect

選択されているように見せたいだけでない限り、追加でき<option value="" ng-if="defaultAccount">{{defaultAccountName}}</option>ます。ただし、同じ値に対して 2 つの項目がある場合は、オプションのリストから既定のアカウントを削除するか、2 つの項目を保持して、そのうちの 1 つにプレフィックスを付けます(Default)。2 番目のオプションを使用すると、後でデフォルトが変更された場合でも、ユーザーは選択を失うことなくデフォルトのオプションを選択できます。これは、外部モデルを変更しなくても、フォームでデフォルトが選択されていることも意味します。

于 2016-04-12T20:23:47.013 に答える