如何从Angular范围中排除元素?

时间:2013-06-12 20:26:42

标签: angularjs d3.js raphael angularjs-scope

我的前提错了。虽然AngularJS肯定会减慢速度,但这并不是由于我在下面描述的问题。然而,对于我的问题 - 如何从Angular范围中排除一个元素 - 它能够证明这一点,这是一个微不足道的答案。

我正在构建一个使用d3 + Raphael从AJAX获取的数据生成图形的网站。这会在DOM中产生大量的SVG或VML元素,具体取决于用户选择呈现的图表类型(例如,饼图很少,行和堆叠条都有很多)。

我遇到了一个问题,即在AngularJS控制的文本字段中输入文本会导致Firefox爬行。我键入了几个字符,然后等待2-3秒让它们突然出现,再输入几个等等(Chrome似乎处理得更好了。)

当页面上没有图形时(用户没有为要生成的图形提供足够的数据),编辑这些文本字段的内容就可以了。我假设 AngularJS在尝试更新DOM时遇到问题,并且需要查看数百个SVG或VML元素。

然而,该图表不包含AngularJS需要担心的任何内容。 (但是,在图表之前和之后都有UI元素需要注意。)

我可以想到两个解决方案:

  1. 将图形的DIV放在AngularJS控制器之外,并使用CSS将其放置在实际需要的位置

  2. 告诉AngularJS - 不知何故 - 永远不要让图表的DIV;在保持视图和模型同步

  3. 时跳过它

    第二个选项对我来说似乎更合适,因为它使文档布局保持理智/语义。有没有办法做到这一点? (或者我没有想过的一些甚至更好的解决方案?)

1 个答案:

答案 0 :(得分:17)

您是否尝试过ng-non-bindable? http://docs.angularjs.org/api/ng.directive:ngNonBindable

<ANY ng-non-bindable>
   ...
</ANY>
相关问题