假设toShowVar
我们未定义,哪个更贵?
<span ng-bind="toShowVar" ng-show="toShowVar"></span>
或
<span ng-bind="toShowVar"></span>
如果变量未定义,后者显然不会在屏幕上打印任何内容。
答案 0 :(得分:0)
<span ng-bind="toShowVar" ng-show="toShowVar"></span>
似乎更贵。因为toShowVar
将被span
绑定,即使其中没有任何内容。如果我们使用ng-if="toShowVar"
,那将会很少昂贵,因为角度不包括这个span
元素到DOM.So给它们降序
<span ng-bind="toShowVar" ng-show="toShowVar"></span>
<span ng-bind="toShowVar"></span>
<span ng-bind="toShowVar" ng-if="toShowVar"></span>
答案 1 :(得分:0)
如果您使用ng-bind="toShowVar"
,则ng-show="toShowVar"
将毫无用处,因为如果ng-bind
为{span
,使用toShowVar
就足以呈现undefined
为空的内容{1}}。
因为ng-show="toShowVar"
中的第二次无用的测试,因此使用它们会更加昂贵,因为它会再次检查toShowVar
的值,然后尝试将类.ng-hide
添加到元素。
但不同之处在于只有ng-bind
时,范围将在包含空内容的页面中呈现,而使用ng-show
会使用dispaly:none
呈现它来自.ng-hide
class。
答案 2 :(得分:0)
为了解释这一点,首先ng-show
和ng-bind
都在同一priority
级别运行。没有人赞成ng-show
来提高绩效。
此处隐藏内容ng-show
根本不需要。 ng-show也将开始观看相同的节目(此处toShowVar
)并将在其注册的观察者上执行(通过添加ng-hide类将显示属性更改为无)。
要解释更多信息,如果您在进一步操作中使用ng-show='false'
并将toShowVar
更改为某些文本,并通过调试工具访问DOM
,则可以检查更新的文本是否仍然可用。所以,显然ng-show不会在这里增加任何性能优势。
如果您使用ng-if
(以更高优先级运行两者),它将从DOM
中删除元素,并且在将其重新呈现给DOM之前,后续观察者将不会处于活动状态,因此即使是ng-if
您正在运行额外的内容,因此它不会像ng-bind
那样快,但会比ng-bind
和ng-show
更快。
注意:只有ng-bind
和ng-bind ng-show
在UI中有所不同,如果跨度对UI有一些影响(可能是内联,层次结构父级或任何),即使它是空的,也可以在UI中看到(像边框一样),否则,外观和感觉都是一样的。