Angular JS:如何捕获Onchage下的Selected值

时间:2017-05-19 10:22:56

标签: angularjs

在下拉更改中,我尝试捕获所选值。

这是我的代码

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="myapp" ng-controller="FirstCtrl">
   <table border="1">
      <tr>
         <th ng-repeat="(key, val) in collectioninfo[0]">
            <span ng-if="allDropDownsHere.indexOf(key)>=0">
               <select ng-change="getchange()" >
                  <option>{{key}}</option>
                  <option ng-repeat="(k, v) in val[0]" value="{{v}}">{{k}}</option>
               </select>
            </span>
            <span ng-if="allDropDownsHere.indexOf(key)<0">
            {{ key }}
            </span>
         </th>
      </tr>
      <tr ng-repeat="row in collectioninfo">
         <td ng-repeat="(key2, val2) in row">
            <span ng-if="allDropDownsHere.indexOf(key2)>=0">
            {{ getFirstKeyOfDropDown(val2) }}
            </span>
            <span ng-if="allDropDownsHere.indexOf(key2)<0">
            {{ val2 }}
            </span>
         </td>
      </tr>
   </table>
</div>

当我保持ng-change =“getchange()”时,期望ng-model和ng-model导致空标题

这是我的小提琴

http://jsfiddle.net/sD7X9/28/

您能告诉我如何获取所选值吗?

2 个答案:

答案 0 :(得分:2)

您的<select>没有ng-model这是必需的(您知道自己看到了控制台错误)。

<select ng-change="getchange(dropdownvalue)" ng-model="dropdownvalue">
  <option ng-selected="true">{{key}}</option>
  <option ng-repeat="(k, v) in val[0]" value="{{v}}">{{k}}</option>
</select>

而且,在控制器中,

$scope.getchange = function(value) {
  alert(value)
}

working fiddle

答案 1 :(得分:2)

首先,如果没有ng-change,您就无法使用ng-model。为了保持选择框值并避免空标题,您可以使用ng-model

ng-init分配值
<select ng-change="getchange(selectItem)" ng-model="selectItem" ng-init="selectItem = key">
    <option>{{key}}</option>
    <option ng-repeat="(k, v) in val[0]" value="{{v}}">{{k}}</option>
</select>

Demo