我有一个以下代码段
HTML
<div ng-controller="MyCtrl">
<div ng-if="quan!=true">
<select ng-model="selectedItems" ng-init="selectedItems = selectedItems + ''">
<option ng-repeat="value in arr | limitTo:quantity">{{value}}</option>
</select>
</div>
<div>
<a href="#" ng-click="submit()">Submit</a>
</div>
</div>
JS
$scope.arr = [];
$scope.quan=false;
for(var a=1; a<=10; a++) {
$scope.arr.push(a);
}
$scope.selectedItems = $scope.arr[0];
$scope.quantity = 10; //just hardcoded
在这里,当我点击提交按钮时,我没有得到我在下拉列表中选择的值。我为selectedItems定义了未定义。
还需要在选择框中选择第一个选项。
我想我错过了什么!
答案 0 :(得分:2)
更改为$scope.selectedItems = $scope.arr[0];
后,您需要初始化选项值ng-init="selectedItems = selectedItems + ''"
,因为角度使用严格比较。
请参见此工作fiddle。
您也不需要在点击事件submit(selectedItems)
中传递所选项目。因为它已经在控制器范围内。
另外,我建议您更改选项结构以避免ng-init
。
类似的东西:
options = [{
name: 'key1',
value: 'value1'
}, {
name: 'key2',
value: 'value2'
}];
答案 1 :(得分:0)
HTML:
<select ng-model="selectedItem" >
<option ng-repeat="value in arr | limitTo:quantity">{{value}}</option>
</select>
<div>
<a href="#" ng-click="submit();">Submit</a>
</div>
JS:
$scope.arr = [];
for(var a=1; a<=10; a++) {
$scope.arr.push(a);
}
$scope.selectedItem = $scope.arr[0];
$scope.quantity = 10; //just hardcoded
$scope.submit = function(){
console.log($scope.selectedItem); // you will get the selected value here, if you want it after button click.
};
由于角度的双向绑定,只要你选择了某个东西就可以使用它。您不必将其作为HTML中的函数参数传递