You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular ui-select点击选中项调用函数传参为undefined如何解决

失效原因

ng-click绑在<ui-select-match>根标签上拿不到$item是作用域问题:
<ui-select-match>本身是所有已选tag的外层公共容器,绑定在这个标签上的事件走的是外层作用域,根本没有ui-select遍历渲染单个已选项时生成的局部$item变量,传参自然是undefined。
$item是组件渲染每个单独已选项时,注入到单条选项模板内部的上下文变量,只有在<ui-select-match>标签包裹的内部模板内容里才能访问到。

正确写法

把点击事件移到<ui-select-match>内部包裹单条选项内容的元素上即可,代码如下:

<ui-select-match style="width: 100%;" placeholder="Select values...">
  <span ng-click="$ctrl.myFunction($item); $event.stopPropagation()">
    {{$item["name"]}}
  </span>
</ui-select-match>
  • 这里直接传$item就能把当前点击的完整选中项对象传入你的方法,如果只需要name字段,传$item["name"]或者$item.name都可以。
  • 加$event.stopPropagation()是为了阻止事件冒泡,不然点已选项的时候会顺带触发下拉面板的展开收起,不符合常规交互预期,不需要的话可以删掉。

内容的提问来源于stack exchange,提问作者Mandroid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 18:18:40