Angularjs ng-options selected value of dropdownlist

Angularjs ng-options selected value of dropdownlist

本文关键字:of dropdownlist value selected ng-options Angularjs      更新时间:2023-09-26

我使用自定义指令在下拉列表中显示年份。这是指令的模板。

template: '<select class="form-control" ng-model="joining.Year" ng-options="year for year in Years"></select>'

Html就是这样

<div years-dropdown range="50"></div>

年份是一个字符串数组。年份字段在我的服务器端模型中是字符串类型。所选值正确存储在数据库中,但是当我重新加载页面(从数据库中获取模型)时,我在控制器中获得了正确的值,但值未在下拉列表中显示为选定值。

编辑当我更改下拉列表的选择并检查html时,还有一件事,它仍然将默认值显示为已选择(第一个选项具有选定的属性)。但是,我的范围对象已正确更新。

问题是$scope.joining.YearYears[$index]不是同一个对象引用。 我不相信ngOptions指令使用等价逻辑。 所以这是手动执行此操作的修复程序(将其放入您的.then()函数中:

for(var i = 0; i < $scope.Years.length; ++i) {
    if(angular.equals($scope.Years[i], $scope.joining.Year) {
        //the fix to get years[i] if it's equal to joining.Year
        $scope.Years[i] = $scope.joining.Year;
    }
}
//finally, apply data into joining
angular.extend($scope.joining, data);