假设toShowVar
我们未定义,哪个更昂贵?
<span ng-bind="toShowVar" ng-show="toShowVar"></span>
或
<span ng-bind="toShowVar"></span>
如果变量未定义,后者显然不会在屏幕上打印任何内容。
最佳答案
为了解释这一点,首先,ng-show
和 ng-bind
都以相同的优先级
级别运行。没有任何东西可以支持 ng-show
来提高性能。
这里隐藏内容根本不需要ng-show
。 ng-show 也将开始监视相同的内容(此处为 toShowVar
),并将在其注册的监视程序上执行(通过添加 ng-hide 类将 display 属性更改为 none)。
为了解释更多,如果您使用 ng-show='false'
并在进一步操作中将 toShowVar
更改为某些文本,并访问 DOM
通过调试器工具,您可以检查更新的文本是否仍然可用。因此,显然 ng-show 不会在这里增加任何性能优势。
如果您使用ng-if
(以比两者更高的优先级运行),它将从DOM
中删除元素,并且后续的观察者在重新渲染之前不会处于事件状态到 DOM,所以即使在 ng-if
的情况下,你也会运行一些额外的东西,所以它不会像 ng-bind
那样更快,但比 ng- 更快绑定(bind)
和ng-show
thgother。
注意:如果跨度对 CSS 有一定影响(可能是内联、层次结构父级、或任何在 UI 中可见的),即使它是空的(例如边框),否则,外观和感觉都是相同的。
关于javascript - 未定义的 ng-bind 是否比 ng-bind 和 ng-show 更昂贵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44926318/