选择选择不在ng-click上调用函数

时间:2015-09-03 22:37:51

标签: html angularjs jquery-chosen

我正在使用一个选择的选项,我在事件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>

1 个答案:

答案 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;
}