10

我的前提是错误的。虽然 AngularJS 确实让事情变慢了,但这并不是因为我在下面描述的问题。然而,正是 flim 对我的问题的回答——如何从 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;在保持视图和模型同步时跳过它

第二个选项对我来说似乎更可取,因为它使文档布局保持理智/语义。有什么办法吗?(或者我没有想到的更好的解决方案?)

4

1 回答 1

17

你试过 ng-non-bindable 吗?http://docs.angularjs.org/api/ng.directive:ngNonBindable

<ANY ng-non-bindable>
   ...
</ANY>
于 2013-06-17T07:59:19.757 回答