我正在创建一个指令,允许您按照自己喜欢的方式设置“下拉列表”。基本上我正在做的是隐藏实际的select元素并提供一个带有ul的div,它将所有选项作为列表项。最终它将动态控制select元素,以便您可以使用伪下拉列表并保留select元素的功能。我遇到的问题是我使用$ scope。$ watch来监视select元素的子元素。选项元素。因此,只要他们更新,ul也会自动更新。我遇到了一个奇怪的$ digest问题。我创建了一个JSBIN here。如果您没有任何反应单击添加。如果再次单击它,则会将两个li添加到ul。如果你继续这种模式,你会注意到每一次点击li都会更新。我创建了第二个JSBIN here并使用了$ timeout。在$ timeout中我调用$ digest并且ul正确更新。我很困惑为什么会这样。我认为ng-click会触发一个$ digest,这似乎就是这样,但只是每一次点击。这对我来说真的很困惑。任何帮助将不胜感激。
目标是使该指令成为独立于其他代码的模块(因为模块应该是)。所以我不能依赖在控制器中运行$ digest的人。我也不知道为什么每次点击都会发生这种情况,真的需要知道原因。
更新
我找到了解决我想做的事情。我现在的问题是,由于某种原因,当我使用triggerHandler在select元素上触发change事件时,它会获得$ apply in progress错误。对于我的生活,我不能弄明白为什么。 Here是新的JSBIN。