2016-04-16 70 views
2

我有一个接受字符串作为输入参数的组件。 该字符串应该是局部的,所以我结合该字符串是这样:绑定最佳实践

<drawer-item [text]="getSectionName (Routes.Companies)" >... 

这样一切完美,但我把一个破发点到getSectionName功能,我注意到,这个函数被调用很多的时代。 在启动时被称为5-6次,然后每当我在应用程序中执行某些操作时,都会再次调用它。

这是正确的行为还是对演出有危险?

非常感谢

编辑 管道:

@Pipe({ 
    name: 'route', 
    pure: false 
}) 
export class RoutePipe implements PipeTransform { 
    static i:number = 0; 
    transform(route: Route) { 
     switch (route.state) { 
      case Routes.StartPage.state: 
      console.log (RoutePipe.i++); 
       return "H"; 
      case Routes.Companies.state: 
       return "G"; 
      case Routes.Settings.state: 
       return "F"; 
      case Routes.Users.state: 
       return "E"; 
      case Routes.CoursesSources.state: 
       return "D"; 
      case Routes.DocumentSources.state: 
       return "C"; 
      case Routes.Notifications.state: 
       return "B"; 
      case Routes.NonDocumentalExpirations.state: 
       return "A"; 
      default: 
       break; 
     } 
    } 
} 

编辑 有关管道的很好的解释可以发现here

回答

1

因为您提到的性能影响,不鼓励在绑定表达式中使用函数。

优先选择字段绑定函数结果并绑定到此字段。

在您的具体示例中,管道可能是合适的解决方案。

+0

但即使有'表达式'或'变量引用',该表达式将在CD运行时进行评估。所以性能如何重要?道歉,如果我错过了什么.. –

+1

比较两个值的标识是便宜的,调用函数比较昂贵(没有比较例如HTTP请求),但它可以总结,如果你有很多的绑定。 –

+0

使用管道仍然被称为很多次。在这一点上,我认为这是Angular2的正常行为 – user3471528