我有一个 Angular Controller ,如下所示;
controllers.controller('editCodeReviewCtrl', ($scope, $rootScope, $modalInstance, User, reviewRequestId, reviewRequestDetail, reviewRequestValue, reviewRequestTitle) ->
console.log "reviewRequestvalue", reviewRequestValue
$scope.reviewRequest = {}
$scope.reviewRequest.id = reviewRequestId
$scope.reviewRequest.detail = reviewRequestDetail
$scope.reviewRequest.value = '25.0'
$scope.reviewRequest.title = reviewRequestTitle
$scope.values = [
{value: '10.0'},
{value: '25.0'},
{value: '50.0'} ]
)
我的 View 模板如下所示;
<select ng-model="reviewRequest.value" ng-options="ele.value for ele in values" name="value" required class="friendly-margin pull-right">
</select>
我希望我的下拉菜单设置默认值,在此处的示例中,它应该设置为“25.0”,但我没有在浏览器中观察到该行为。
注意正在输出的 html
<select ng-model="reviewRequest.value" ng-options="ele.value for ele in values" name="value" required="" class="friendly-margin pull-right ng-pristine ng-valid ng-valid-required ng-touched">
<option value="?" selected="selected" label=""></option>
<option value="0" label="10.0">10.0</option>
<option value="1" label="25.0">25.0</option>
<option value="2" label="50.0">50.0</option>
</select>
这次调试该朝什么方向走?
我也看过这篇文章,how to use ng-option to set default value of select element这看起来与我编写自己的代码的方式一致。
最佳答案
如the documentation解释说,当您使用诸如
之类的表达式时label for value in array
选择框中显示的是label
,与ngModel绑定(bind)的是value
。所以,在你的表达中:
ng-model="reviewRequest.value" ng-options="ele.value for ele in values"
ele
是值数组中的对象之一。如果您希望对象 {value: '25.0'}
成为选择框中选定的对象,则您的 ngModel 应该是对此对象的引用(而不是相等的副本!):
因此您的 Controller 应将 reviewRequest.value
设置为 $scope.values[1]
。
或者,如果您希望 ngModel 包含字符串 25.0
而不是包含此值的对象,则表达式应为
ng-options="ele.value as ele.value for ele in values"
关于angularjs - 为什么我的 ng-options 不设置默认值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28315597/