2

我在使用AngularJS和 Angular-UI 的 chrome 扩展上遇到了 Select2 的不良行为。

场景

Select2 的内容通过 AngularJs $resouces 模块异步加载。


应该发生什么?

当我单击 Select2 时,应显示内容。


实际发生了什么?

当我第一次单击任何 select2 下拉菜单时,它只是眨眼然后隐藏。


观察:
相同的代码在 chrome 的扩展弹出窗口中工作得很好。
您可以在这里看到它的工作原理:http: //moneynow2.apphb.com并且可以在我的 github 存储库
中浏览代码。

4

2 回答 2

2

我的在 Chrome 扩展中工作正常,但我得到“拒绝执行内联事件处理程序,因为它违反了以下内容安全策略指令:“default-src 'self' chrome-extension-resource:”。请注意,'script-src ' 没有明确设置,所以 'default-src' 用作后备。 ” 在 chrome 控制台中。

于 2013-01-29T13:42:53.730 回答
0

这真的很难测试。

看起来像在弹出窗口中,当我打开下拉菜单时,路由被重新加载(整个控制器和 ng-view 的内容重新加载)。这不会发生在网页上。我以为弹出窗口出现在右下角,伸出窗口(它发生在我穿过它时)。当这种情况发生时,我认为它可能触发了一个实际上导致 select2 消失的窗口滚动事件(这是 select2 的一个功能,可以防止下拉菜单停留在某个随机位置,因为它是 pos:fixed)。

我对 chrome 弹出窗口也不太了解,无法弄清楚哪些事件可能导致“url”更改或触发滚动事件等。

起初我会建议做 selectOptions = { data: $myResource.query() } 之类的,但我开始认为它没有帮助。

建议:

尝试删除路由器,看看会发生什么。我真的不知道您应该在 chrome 扩展程序中使用它。在这么小的空间里,代码越少越好。

于 2013-01-28T23:07:24.550 回答