1

我根据 JSON 调用填充选择的值和显示名称。在同一个调用中,我从嵌套数组中提取默认帐户值(如果存在)。所以我有一个保存该默认帐户值的范围,并且选择正在填充,但是对于我的生活,我无法弄清楚如何让选择属性应用于数组中具有值的对象对应于默认值。

本质上,如果数组中存在默认帐户 ID,我只想将“选定”应用于选项。

此外,我无法更改 select 的 ng-model,因为它与表单集合功能相关联。

此外,我对使用 ng-repeat 与 ng-options 持开放态度,只是无法通过 repeat 弄清楚,所以我转向了选项范例。

任何帮助将不胜感激!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-model没有设置为匹配的项目,那么就无法select选择该项目。

除非您只希望它显示为选中状态,否则您可以添加<option value="" ng-if="defaultAccount">{{defaultAccountName}}</option>. 但是,您将有 2 个具有相同值的项目,您可以从选项列表中删除默认帐户,也可以保留这两个项目,但其中一个项目的前缀为(Default). 第二个选项允许用户在以后选择默认选项时仍然选择默认选项,以防默认更改。这也意味着您的表单已选择默认值,而无需更改外部模型。

于 2016-04-12T20:23:47.013 回答