Angular迭代选择选项并设置选定值

时间:2015-06-29 17:25:10

标签: javascript angularjs

我有一个包含来自JSON数据的状态的选择集:

<select name="ParentState" ng-model="selectedState" ng-options="s.StateID as s.StateCode for s in cStates | orderBy:'StateCode'">
    <option value="">Select State...</option>
</select>

并且希望将所选状态设置为为登录用户返回的状态,但我完全确定如何在Angular中完成此操作。这是我尝试过的,但它不起作用。

angular.forEach($scope.cState, function (s) {
    if (s.StateCode == xParentState) {
        $scope.selectedState = s.StateCode;
    }
});

xParent是此状态缩写,例如&#39; MI&#39;为密歇根州

2 个答案:

答案 0 :(得分:1)

ngModel设置为StateID(如ngOptions - value as text for object in array中所示) - 因此请设置{而不是StateCode

if (s.StateCode == xParentState) {
    $scope.selectedState = s.StateID;
}

答案 1 :(得分:1)

查看`ngOptions的文档。

您在此处使用select as label for value in array表达式。因此,要设置ngModel,您需要设置StateID

假设你有一个像这样的对象:

xParentState: {
    StateID: 1,
    StateCode: 'MI',
    StateName: 'Michigan'
}

您可以直接使用$scope.selectedState = xParentState.StateID设置值,也可以使用ngInit在模板中设置(例如,当用户重新加载页面时),而不是迭代状态数组:

 <select ng-model="selectedState" ng-options="s.StateID as s.StateCode for s in cStates | orderBy:'StateCode'" ng-init="selectedState = xParentState.StateID">
     <option value="">Select State...</option>
 </select>