如何在angularjs中传递选择选项值

时间:2017-04-04 08:46:14

标签: javascript angularjs angularjs-ng-repeat

我有一个以下代码段

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定义了未定义。

还需要在选择框中选择第一个选项。

我想我错过了什么!

2 个答案:

答案 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中的函数参数传递