2016-04-16 123 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