javascript - ng-change 函数被多次调用,选择框填充了 ng-options

标签 javascript angularjs

我创建了链式(父子)选择框,其层次结构在 JSON 数据中定义。每个选择框对象都指定了其父选择框对象以及选择框选项数组,其中每个选项都包含选项值 + 父值。选择框对象还包含选定选项对象,该对象与可用选择框选项对象之一是同一对象。以下是数据的简化表示:

enter image description here

我在“select”标签中使用 ng-options 动态创建选择框,然后使用自定义过滤器,通过匹配选项的父选项值来过滤检索到的选项值与其父对象的“当前选定值”。基本上使用自定义过滤器进行从子选项值到选定父值的多对一映射。

问题是,通过这种结构,我想将 ng-change 指令放在选择框上,它将调用 Controller 函数来执行一些操作。但此函数被调用的次数与一个层次结构中选择框的数量相同(在本例中为 3,如图所示)。这会导致应用程序出现严重的不良行为。

Here is the Plunker ,我在其中重现了这个问题。我正在调用选择框更改事件的函数来设置与选择框关联的单选按钮(例如,如果选择了国家/地区选择框中的某个值,则层次结构中下一个选择框的单选按钮,即状态,应该被选中)。但由于 setDrillDown 函数被多次调用,与层次结构中最后一个选择框关联的最后一个单选按钮被选中。

由于这个问题陷入严重困境,我们将不胜感激!

最佳答案

我用了ngModelOptionsthis 因此,当我更改选择时,它只会运行 ngChange 中提供的函数。但在初始化阶段消息保持为空。

我使用 $timeout 作为 this而且效果很好。

关于javascript - ng-change 函数被多次调用,选择框填充了 ng-options,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42837968/

相关文章:

javascript - 根据第一个下拉列表更改第二个下拉列表

javascript - 用 innerhtml 替换节点

javascript - 在另一个选择列表中进行选择后如何显示/隐藏选择列表?

javascript - ngTables 中的 Angular 自定义过滤

json - Angular 路由错误 path.json 的参数必须是字符串

javascript - 我有 3 个 Controller 从数据库获取数据列表并将其显示在下拉列表中,但是当选择它时,它不会获取列表的选定值

Javascript 对象根据以 : foo vs. 结尾的索引 foo() 表现不同

php - 如何从 Gmail 用户处获取群组列表?

javascript - 如何限制与我的 Angular ui-select 链接的 10,000 个对象的数组?

javascript - AngularJS 重复重复错误