【问题标题】:Chosen select not calling a function on ng-click选择在 ng-click 上不调用函数
【发布时间】:2015-09-03 22:37:51
【问题描述】:

我正在使用选定的选择,当事件 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 alert

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

【问题讨论】:

标签: html angularjs jquery-chosen


【解决方案1】:

您应该将ng-options 指令与ng-model 一起使用(您仍然可以添加一个&lt;option&gt; 作为默认值)。它可能看起来像这样:

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

【讨论】:

  • 这可能是因为menuOpcion 本身是一个对象而不是字符串。我编辑了ng-options里面的表达式,你能再试试看吗?
  • 是的,现在它填充了文本,但功能仍然无法正常工作,任何想法为什么会发生这种情况?
  • 我也添加了ng-change。每当您的选择更改时,都会调用此函数。不过,根据您的过滤器的复杂程度,您也许可以直接将 selected 属性绑定到您的过滤器。
  • 好的,这就行了,最后一个细节,如果用户删除了一个选项,我如何跟踪?
猜你喜欢
  • 1970-01-01
  • 2018-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-24
  • 1970-01-01
  • 2013-07-09
  • 1970-01-01
相关资源
最近更新 更多