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

2024-04-04

我的前提是错误的。虽然 AngularJS 确实减慢了速度,但这并不是因为我下面描述的问题。然而,正是 flim 对我的问题(如何从 Angular 范围中排除元素)的回答才证明了这一点。

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

我遇到了一个问题,在 AngularJS 控制的文本字段中输入文本会使 Firefox 变得缓慢。我输入几个字符,然后等待 2-3 秒,让它们突然出现,然后再输入几个字符,等等(Chrome 似乎可以更好地处理这个问题。)

当页面上没有图表时(用户没有提供足够的数据来生成图表),编辑这些文本字段的内容就可以了。我assumeAngularJS 在尝试更新 DOM 时遇到了麻烦,并且它必须查看数百个 SVG 或 VML 元素。

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

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

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

  2. 告诉 AngularJS - 以某种方式 - 不要介意图表的 DIV;在保持视图和模型同步时跳过它

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


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

<ANY ng-non-bindable>
   ...
</ANY>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从 Angular 范围中排除元素? 的相关文章

随机推荐