Angular 使用 ng-options 设置选定的属性
Angular setting a selected attribute with ng-options
我正在根据 JSON 调用填充 select 的值和显示名称。在同一个调用中,我从嵌套数组中提取数据以获取默认帐户值(如果存在)。
所以我有一个保存该默认帐户值的范围,并且 select 正在填充,但对于我来说,我无法弄清楚如何获取 select 属性以应用于数组中具有对应于默认值的值的对象。
本质上,如果数组中存在默认帐户 ID,我只想将 "selected" 应用于该选项。
此外,我无法更改 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 "
}
ng-selected
仅适用于 option
元素,而不适用于 select
元素本身。我不认为你可以在这里用 ng-options
实现你想要的,如果 ng-model
没有设置为匹配的项目那么 select
就没有办法拥有那个项目 selected.
除非你只希望它出现 select,那么你可以添加<option value="" ng-if="defaultAccount">{{defaultAccountName}}</option>
。但是如果你有 2 个相同值的项目,你可以从选项列表中删除默认帐户,或者保留这两个项目,但其中一个的前缀为 (Default)
。第二个选项允许用户仍然 select 默认选项,而不会在以后失去他们的选择,以防默认更改。这也意味着您的表单具有默认的 selected 而无需更改外部模型。
我正在根据 JSON 调用填充 select 的值和显示名称。在同一个调用中,我从嵌套数组中提取数据以获取默认帐户值(如果存在)。 所以我有一个保存该默认帐户值的范围,并且 select 正在填充,但对于我来说,我无法弄清楚如何获取 select 属性以应用于数组中具有对应于默认值的值的对象。
本质上,如果数组中存在默认帐户 ID,我只想将 "selected" 应用于该选项。
此外,我无法更改 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 "
}
ng-selected
仅适用于 option
元素,而不适用于 select
元素本身。我不认为你可以在这里用 ng-options
实现你想要的,如果 ng-model
没有设置为匹配的项目那么 select
就没有办法拥有那个项目 selected.
除非你只希望它出现 select,那么你可以添加<option value="" ng-if="defaultAccount">{{defaultAccountName}}</option>
。但是如果你有 2 个相同值的项目,你可以从选项列表中删除默认帐户,或者保留这两个项目,但其中一个的前缀为 (Default)
。第二个选项允许用户仍然 select 默认选项,而不会在以后失去他们的选择,以防默认更改。这也意味着您的表单具有默认的 selected 而无需更改外部模型。