Ben*_*Ben 10 raphael d3.js angularjs angularjs-scope
我的前提是错的.虽然AngularJS肯定会减慢速度,但这并不是由于我在下面描述的问题.然而,对于我的问题 - 如何从Angular范围中排除元素 - 这是能够证明这一点的问题.
我正在构建一个使用d3 + Raphael从AJAX获取的数据生成图形的站点.这会在DOM中产生大量的SVG或VML元素,具体取决于用户选择呈现的图表类型(例如,饼图很少,行和堆叠条有很多).
我遇到了一个问题,即在AngularJS控制的文本字段中输入文本会导致Firefox爬行.我输入几个字符,然后等待2-3秒让它们突然出现,然后输入几个,等等.(Chrome似乎处理得更好一些.)
当页面上没有图形时(用户没有为要生成的图形提供足够的数据),编辑这些文本字段的内容就可以了.我认为 AngularJS在尝试更新DOM时遇到麻烦,并且需要查看数百个SVG或VML元素.
但是,该图表不包含AngularJS需要担心的任何内容.(但是,在图表之前和之后都有UI元素需要注意.)
我可以想到两个解决方案:
将图形的DIV放在AngularJS控制器之外,并使用CSS将其放置在实际需要的位置
告诉AngularJS - 不知何故 - 永远不要让图表的DIV; 在保持视图和模型同步时跳过它
第二个选项似乎比我更好,因为它使文档布局保持理智/语义.有没有办法做到这一点?(或者我没想过的一些甚至更好的解决方案?)
Foo*_*o L 17
你试过ng-non-bindable吗?http://docs.angularjs.org/api/ng.directive:ngNonBindable
<ANY ng-non-bindable>
...
</ANY>
Run Code Online (Sandbox Code Playgroud)