Ng-if:使用普通表达式而不是函数调用,有什么不同吗?
Ng-if: using plain expression instead of function call, does it make a difference?
我找不到答案所以我在这里提出来。
如果我使用
,资源或性能会有所不同吗?
$scope.isAllowed = true;
<div ng-if="isAllowed"></div>
而不是
$scope.isAllowed = function() {
return true;
};
<div ng-if="isAllowed()"></div>
我知道如果我使用第一个选项,Angular2+ 会有优势,但这是否也适用于 AngularJs?
对于一次性绑定,我可以在 the expression guide 处找到 {{::isAllowed}}
,但我认为这在这种情况下不起作用。
我还发现 ng-if 的绑定使其成为观察者,归结为 $scope.$watch
函数。但这并不能解决问题。
有人对这个话题有更深入的了解吗?
没有。两者都会创建一个观察者。 (我的意思是有些东西快一点,但这可以忽略不计。)
当你关心代码风格和代码可维护性时,你会看到差异。
例如当您的页面变慢时,您想知道 - 怎么了?然后你打开模板:
<div ng-if="isAllowed"></div>
这只是一个观察者
<div ng-if="isAllowed()"></div>
这是...您需要打开控制器文件才能看到它是什么
现在假设您有 50 个这样的函数,其中一些函数调用另一个函数,它们调用工厂中的函数等。可能真的很难理解到底是什么让页面变慢了。
所以短表达式的一般规则应该是——在 ng-if、ng-show ng-bind、{{}} 等中没有函数。
如果你有像 ng-if="conditionA && (conditionB || conditionC) || (conditionD && !conditionQ)"
这样的东西,你可能想把它提取到一个函数中以便于阅读和测试。
我找不到答案所以我在这里提出来。
如果我使用
,资源或性能会有所不同吗?$scope.isAllowed = true;
<div ng-if="isAllowed"></div>
而不是
$scope.isAllowed = function() {
return true;
};
<div ng-if="isAllowed()"></div>
我知道如果我使用第一个选项,Angular2+ 会有优势,但这是否也适用于 AngularJs?
对于一次性绑定,我可以在 the expression guide 处找到 {{::isAllowed}}
,但我认为这在这种情况下不起作用。
我还发现 ng-if 的绑定使其成为观察者,归结为 $scope.$watch
函数。但这并不能解决问题。
有人对这个话题有更深入的了解吗?
没有。两者都会创建一个观察者。 (我的意思是有些东西快一点,但这可以忽略不计。)
当你关心代码风格和代码可维护性时,你会看到差异。
例如当您的页面变慢时,您想知道 - 怎么了?然后你打开模板:
<div ng-if="isAllowed"></div>
这只是一个观察者
<div ng-if="isAllowed()"></div>
这是...您需要打开控制器文件才能看到它是什么
现在假设您有 50 个这样的函数,其中一些函数调用另一个函数,它们调用工厂中的函数等。可能真的很难理解到底是什么让页面变慢了。
所以短表达式的一般规则应该是——在 ng-if、ng-show ng-bind、{{}} 等中没有函数。
如果你有像 ng-if="conditionA && (conditionB || conditionC) || (conditionD && !conditionQ)"
这样的东西,你可能想把它提取到一个函数中以便于阅读和测试。