我在html下面有这个
<select name="reason" class="form-control" ng-model="reasonSelected"
ng-options="reason for reason in reasonList" required></select>
在我的角度控制器的开头我有
$scope.reasonSelected = $scope.item.stsChangeReason;
$log.debug("$scope.reasonSelected = " + $scope.reasonSelected);
将以下打印到控制台,但仍然没有默认
LOG: $scope.reasonSelected = someValue
以及其他一些初始化函数
$scope.reasonList = response;
如果我这样做
$scope.reasonSelected = $scope.reasonList[0];
然后我看到一个默认值。我错过了一些明显的东西吗?
答案 0 :(得分:3)
这是AngularJS中的一个常见错误。要设置为默认值,您需要确保reasonSelected
范围变量持有对所需reasonList
范围数组变量项的引用(正如您在调查中看到的那样)。
根据您是否使用一系列字符串或对象或其他内容,您的问题的答案会略有不同。
编辑:问题是您的ng-options参数不正确。使用select as label for value in array
综合表达式。请注意as
。
<select name="reason" class="form-control" ng-model="reasonSelected"
ng-options="reason as reason for reason in reasonList" required></select>
假设一个字符串数组:http://plnkr.co/edit/06c5pQ?p=preview
答案 1 :(得分:0)
我必须看到您用于ng-options的数据,但听起来您没有将其初始化为您想要的值。您可能需要执行ng-options="reason.id as reason.name for reason in reasonList"
之类的操作,具体取决于您的数据,但根据它的声音$scope.reasonSelected = $scope.reasonList[0];
听起来很正常。查看同一问题的其他答案:
答案 2 :(得分:0)
我做了这个并且有效
$scope.reasonSelectedSaved = $scope.item.stsChangeReason;
在init函数中
$scope.reasonList = response;
$scope.reasonSelected = $scope.reasonSelectedSaved;
并使用手表我更新了新选择的原因
$scope.$watch('reasonSelected', function () {
$scope.item.stsChangeReason = $scope.reasonSelected;
});