2016-03-17 107 views
0

我想獲得用戶從我的下拉列表中選擇的值。 我如何從角度下拉獲取值?

<select ng-model="item" ng-change="vm.getItem()"> 
    <option value="discount">Discount</option> 
    <option value="{{::item}}" 
      ng-repeat="item in vm.items" 
      ng-bind="item.name" 
    </option> 
    </select> 

在我的控制器

vm.getItem = function() { 
    vm.pickedItem = //not sure what to do... 
    //I need to get the select item 
    //please noted that the discount is a stand alone option value. I need to get  
    //that too if user selects it. 
} 

我不想用ng-option因爲它有一些限制,我不需要。我希望能夠從常規的<option>標籤中獲得。 感謝您的幫助!

+1

什麼限制沒有ngOptions必須ALIS控制器?事實上,在這種情況下ngRepeat是有限的,使用ngOptions會更簡單。 – dfsq

回答

1

我會建議你使用ngOptions

設置了適當的模型select元素即vm.pickedItem可以在控制器中直接使用,也可以將其傳遞給你的方法像vm.getItem(vm.pickedItem)

<select ng-model="vm.pickedItem" ng-change="vm.getItem(vm.pickedItem)"> 
    <option value="discount">Discount</option> 
    <option value="{{::item}}" 
      ng-repeat="item in vm.items" 
      ng-bind="item.name"> 
    </option> 
</select> 
1
vm.getItem = function() { 
    var selectedItem = vm.item; 
    ////vm.item is the bound variable to the dropdown's ng-model directive 
} 

如果你真的想在這個場景中使用ng-change事件,那麼在你的「getItem」事件中,你應該訪問綁定到下拉的ng-模型稱爲「項目」在你的HTML標記中看到。

1

你忘了你的select

<select ng-model="vm.item" ng-change="vm.getItem()"> 

在控制器

vm.getItem = function() { 
    console.log(vm.item) 
    or 
    console.log(this.item) 
}