首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >角属性绑定-提取还是不提取?

角属性绑定-提取还是不提取?
EN

Stack Overflow用户
提问于 2018-03-20 14:16:43
回答 1查看 27关注 0票数 1

假设我有以下代码的某一页:

“纯”HTML:

代码语言:javascript
复制
<img [src]="urlParams.includes('search') ? 'search-icon' : urlParams.includes('detail') ? 'detail-icon' : 'empty-icon'"/>

<div *ngIf="(a && b) || (!a && c && d) "> ... </div>

我决定要一个更干净的html文件,并将一些逻辑移到控制文件中,如下所示:

HTML:

代码语言:javascript
复制
<img [src]="decideParameter(urlParams)"/>
<div *ngIf="decideExpression(a,b,c,d)"></div>

并在相应的控件.ts文件中:

代码语言:javascript
复制
 decideParameter(urlParams: any) {
    if (urlParams.includes('search')) {
      return "search-icon";
    }
    if (urlParams.includes('detail')) {
      return "detail-icon";
    }
    return "empty-icon";
  }

  decideExpression(a, b, c, d){
    return (a && b) || (!a && c && d);
  }

我的代码有时包含更复杂的条件,有时会绑定到属性,这会发生很大的变化。这些属性和变量有时来自*ngFor。在这种情况下,什么样的方法更好呢?将这些表达式提取到控制文件中,还是将其保留在html中?

当我想知道这一点时,我注意到,如果我提取这些代码,并在提取的类中插入一个console.log,如下所示:

代码语言:javascript
复制
 decideExpression(a, b, c, d){
    console.log("method called!")

    return (a && b) || (!a && c && d);
  }

我可以看到,每一次鼠标移动都会出现这样的情况:

所以我的问题是:从HTML .ts方法中提取属性绑定表达式会产生更多的更新检查吗?(或者,它是否已经更新了那么多?)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-20 15:13:05

不,它没有,它做了完全相同的检查量,每个渲染一个。在每个异步事件之后进行呈现,如XHR事件、键盘事件、鼠标事件等。在你的重构之前已经是这样了

如果需要模板中有关表达式的一些详细信息,可以检查此官方医生

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49386662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档