Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/429.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Ng if:使用普通表达式而不是函数调用,会有区别吗?_Javascript_Angularjs_Angularjs Ng If - Fatal编程技术网

Javascript Ng if:使用普通表达式而不是函数调用,会有区别吗?

Javascript Ng if:使用普通表达式而不是函数调用,会有区别吗?,javascript,angularjs,angularjs-ng-if,Javascript,Angularjs,Angularjs Ng If,我找不到答案,所以我把它带到这里 如果我使用 $scope.isAllowed = true; 我知道如果我使用第一个选项,Angular2+有一个优势,但这是否也适用于AngularJs? 有一次,我可以在中找到{{::isAllowed},但我认为在这种情况下不起作用 我还发现ng if的绑定使它成为了一个观察者,这可以归结为$scope.$watch函数。但这并不是问题所在 有人对这个话题有更深入的了解吗?没有。两者都会导致创建一个观察者。(我的意思是ofc的速度稍微快一点,但这可以

我找不到答案,所以我把它带到这里

如果我使用

$scope.isAllowed = true;

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

我还发现ng if的绑定使它成为了一个观察者,这可以归结为
$scope.$watch
函数。但这并不是问题所在


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

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

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

例如,当你的页面速度变慢时,你想知道-发生了什么事?然后打开模板:

这只是一个观察者

这是。。。您需要打开控制器文件以查看它是什么

现在假设你有50个这样的函数,其中一些函数调用另一个函数,它们调用工厂中的函数,等等。可能很难理解到底是什么导致页面变慢

所以短表达式的一般规则应该是-ng-if中没有函数,ng-show-ng-bind,{{}等等。 如果您有smth(如
ng If=“conditionA&&(conditionB | | | conditionC)| |(conditionD&&!conditionQ)”
您可能希望将其提取到一个函数中,以便于可读性和测试

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