1

如何生成带有选项和默认选项标记为“已选择”的选择元素?

例如,我的选项数组:

    $scope.options = [
        {
            "value": 1,
            "label": "One",
            "selected": true
        },
        {
            "value": 2,
            "label": "Two"
        },
        {
            "value": 3,
            "label": "Three"
        }
    ];

和角度的html:

<select name="">
    <option ng-repeat=" option in options " value="{{ option.value }}" ng-selected=" option.selected === true "> {{ option.label }}</option>
</select>

所以,我需要生成这样的东西:

<select name="">
    <option value="1" selected>One</option>
    <option value="2">Two</option>
    <option value="3">Three</option>
</select>

我要使用ng-options.

谢谢

4

3 回答 3

0

对于这种复杂的对象,使用ng-options是更好的选择。所以你可以用这段代码来做。

<select ng-options="option.value as option.label for option in options" ng-model="yourModel">
</select>

我只添加ng-model它是 ng-options 工作所必需的,只需将您的模型设置为您想要的值,它将自动设置...

于 2016-09-26T18:06:28.727 回答
0
<select ng-model="selectedOpt" ng-options="option.value for option in options" ng-change="setOption(selectedOpt)">

在您的控制器中,您应该将模型设置为选定的模型

$scope.selectedOpt = _.find($scope.options, function(o){return o.selected;})

function setOption(opt){
    opt.selected =true;
}
于 2016-09-26T18:20:33.360 回答
0

要拥有默认选项,必须首先填充列表,否则您将收到错误或空白选项。您可以在控制器中执行此操作。这是一个小提琴 https://jsfiddle.net/rosstroha/3dcthfwh/3/

示例控制器:

var myApp = angular.module('myApp',[]);

angular.module('myApp').controller('MyCtrl', MyCtrl);

function MyCtrl($scope) {
    $scope.optionList = [
    {value: "val1"},
    {value: "val2"}
    ]
    $scope.selectedOption = $scope.optionList[0];
}

HTML:

<div ng-app="myApp">
  <div ng-controller="MyCtrl">
    <select ng-model="selectedOption" ng-options="option.value for option in optionList">
  </div>
</div>

或者,您可以添加另一个始终存在的选项,就像这样

<div ng-app="myApp">
  <div ng-controller="MyCtrl">
    <select ng-model="selectedOption" ng-options="option.value for option in optionList">
    <option disabled value="">Select</option>
  </div>
</div>
于 2016-09-26T19:22:10.600 回答