我正在使用一个选择的选项,我在事件ng-click发生时添加了一个函数调用,但是它没有做任何事情,当我在一个按钮中调用相同的函数时,它为什么会这样?
ng-change也不起作用,更糟糕的是,它会吃掉我的选择而只留下第一个。
我的选择代码:
<select ng-model="ind_oferta" multiple class="control-group chosen-select" chosen >
<optgroup label="Oferta">
<option value=""> </option>
<option ng-click="aplicarFiltro()" ng-repeat="menuOpcion in menu[0].opciones.oferta" value={{menuOpcion.id}}>
{{menuOpcion.tipo}}</option>
</optgroup>
</select>
该功能非常简单,只是一个javascript警报
$scope.aplicarFiltro = function(){
alert("hello");
}
并且我认为不值得把按钮代码,那一个工作所以......
编辑:我将选择代码更改为此,仍然没有调用该函数,帮助!
<select multiple class="control-group chosen-select" chosen style="width:250px;"
ng-model="ind_oferta" ng-click="aplicarFiltro();"
ng-options="menuOpcion.id as menuOpcion.tipo for menuOpcion in menu[0].opciones.oferta">
<option>--</option>
</select>
答案 0 :(得分:2)
您应该将ng-options
指令与ng-model
一起使用(您仍然可以添加一个<option>
作为默认值)。它可能看起来像这样:
<select ng-options="menuOpcion.tipo for menuOpcion in menu[0].opciones.oferta"
ng-model="selected"
ng-change="aplicarFiltro()" chosen multiple>
<option value=""></option>
</select>
有很多自定义选项,因此最好查看文档。
要获得用户删除的选项,您可以在控制器中执行以下操作:
var previousSelection = [];
$scope.changedSelection = function () {
// Check if the current selection contains every element of the previous selection
for (var i = 0; i < previousSelection.length; i++) {
if ($scope.selectModel.indexOf(previousSelection[i]) == -1) {
// previousSelection[i] was deselected
}
}
// Set the previous selection to the current selection
previousSelection = $scope.selectModel;
}