1

我找不到答案,所以我在这里提出来。

如果我使用它是否会对资源或性能产生影响

$scope.isAllowed = true;
<div ng-if="isAllowed"></div>

代替

$scope.isAllowed = function() {
    return true;
};
<div ng-if="isAllowed()"></div>

如果我使用第一个选项,我知道 Angular2+ 有一个优势,但这也适用于 AngularJs 吗?{{::isAllowed}}我可以在表达式指南中找到一次绑定,但我认为这在这种情况下不起作用。

我还发现 ng-if 的绑定使它成为观察者,这归结为$scope.$watch函数。但这并不能解决问题。

有人对这个话题有更深入的了解吗?

4

1 回答 1

2

不,两者都会导致创建一个观察者。(我的意思是 ofc 有点快,但这可以忽略不计。)

当您关心代码样式和代码可维护性时,您会看到差异。

例如,当您的页面变慢时,您想知道 - 怎么了?你打开模板:

<div ng-if="isAllowed"></div>这只是一个观察者

<div ng-if="isAllowed()"></div>这是...您需要打开控制器文件以查看它是什么

现在想象一下,你有 50 个这样的函数,其中一些调用另一个函数,它们从工厂调用函数等。可能真的很难理解究竟是什么让页面变慢了。

因此,短表达式的一般规则应该是 - ng-if、ng-show ng-bind、{{}} 等中没有函数。如果你有类似的东西ng-if="conditionA && (conditionB || conditionC) || (conditionD && !conditionQ)",你可能想将它提取到一个函数中以进行可读性和测试。

于 2020-07-07T14:25:24.857 回答