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

Chosen select not calling a function on ng-click

我正在使用一个选定的 select,我在事件 ng-click 发生时添加了一个函数调用,但它没有做任何事情,当我在一个按钮中调用相同的函数时它有效,这是为什么?

ng-change 也不起作用,更糟糕的是,它吃掉了我的选项,只留下第一个。

我的select代码:

<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 代码更改为此,仍然无法调用该函数,帮助!

<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>

您应该将 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;
}