我通过使用自定义指令在adropdown列表中显示年份。这是指令的模板。
template: '<select class="form-control" ng-model="joining.Year" ng-options="year for year in Years"></select>'
Html就是那样
<div years-dropdown range="50"></div>
Years是一个字符串数组.Year字段在我的服务器端模型上是字符串类型。选择的值正确存储在数据库中但是当我重新加载页面(从数据库中获取模型)时,我得到正确的值我的控制器但值不会在下拉列表中显示为选中状态。
修改 当我更改下拉列表的选择并检查html时,它仍然显示默认值为选中(第一个选项具有选定属性)。但是我的范围对象已正确更新。
答案 0 :(得分:1)
问题是$scope.joining.Year
和Years[$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);