我创建了链式(父子)选择框,其层次结构在 JSON 数据中定义。每个选择框对象都指定了其父选择框对象以及选择框选项数组,其中每个选项都包含选项值 + 父值。选择框对象还包含选定选项对象,该对象与可用选择框选项对象之一是同一对象。以下是数据的简化表示:
我在“select”标签中使用 ng-options
动态创建选择框,然后使用自定义过滤器,通过匹配选项的父选项值来过滤检索到的选项值与其父对象的“当前选定值”。基本上使用自定义过滤器进行从子选项值到选定父值的多对一映射。
问题是,通过这种结构,我想将 ng-change
指令放在选择框上,它将调用 Controller 函数来执行一些操作。但此函数被调用的次数与一个层次结构中选择框的数量相同(在本例中为 3,如图所示)。这会导致应用程序出现严重的不良行为。
Here is the Plunker ,我在其中重现了这个问题。我正在调用选择框更改事件的函数来设置与选择框关联的单选按钮(例如,如果选择了国家/地区选择框中的某个值,则层次结构中下一个选择框的单选按钮,即状态,应该被选中)。但由于 setDrillDown
函数被多次调用,与层次结构中最后一个选择框关联的最后一个单选按钮被选中。
由于这个问题陷入严重困境,我们将不胜感激!
最佳答案
我用了ngModelOptions如this 因此,当我更改选择时,它只会运行 ngChange 中提供的函数。但在初始化阶段消息保持为空。
我使用 $timeout 作为 this而且效果很好。
关于javascript - ng-change 函数被多次调用,选择框填充了 ng-options,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42837968/