繁体   English   中英

我应该使用角度ng禁用功能吗?

[英]Should I use a function on angular ng-disabled?

拿这个代码:

 var app = angular.module('test', []); app.controller("controller", function() { this.hello = "Hello world"; this.condition1 = true; this.condition2 = true; this.check_condition2 = function() { return this.condition2; } }); 
 <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> <div ng-app="test" ng-controller="controller as ctrl"> {{ctrl.hello}} <br> <label> <input type="checkbox" ng-model="ctrl.condition2">Condition2</label> <br> <button ng-disabled="ctrl.condition1 && ctrl.check_condition2()">My BTN</button> </div> 

我认为角度的作用是这样的:

  • Angular控制器的属性如condition1。

  • 它读取ng-指令并将正确的指令附加到属性。 因此,例如,如果ng-disabled依赖于condition1,则每次condition1更改值时都会评估该指令。

现在再次上面的示例。 它使用2个条件,但第二个不是属性,它是一个函数。 那么Angular怎么知道函数的某些东西是返回变化呢?

一个可能性是,每当与它们相关或不相关的任何事物在模型上发生变化时,angular会对其所有指令进行评估,但这对于性能来说听起来并不是很好。

那么,有没有人知道Angular如何解决这个ng-disabled表达式,并且我应该在该上下文中使用函数?

几乎没有区别。 Angular为您在模板中使用的所有内容添加了一个监视器。 并且它在每个摘要周期进行评估,无论它是变量还是函数。

因此,您的案例中唯一的开销是调用简单的函数。

请查看https://www.airpair.com/angularjs/posts/angularjs-performance-large-applications的 5.1范围和摘要周期,了解它如何在角度中工作。

当angular正在观看仅包含简单值的表达式时,它可以监视要更改的任何相关变量。 当它正在观察包含函数调用的表达式时,它会在每个摘要循环上调用该函数。

每次更改时只更新一个标志通常是最有效的,但是如果你有很多地方需要更改标志,那么只需要计算函数内部的值以及性能如何命中就可以使用更干净的代码是不是更大的清洁代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM