10

我想知道是否在Angular 1.5中,當你使用組件時,有一種簡單的方法來綁定一個布爾型的屬性,而不用作爲字符串轉換爲@。在Angular 1.5中,如何將一個屬性組件綁定爲布爾值?

例如,我有兩個組件「應用程序菜單」和「應用程序菜單項」沒有transclude。 「app-menu」只有一個屬性,其中是要創建「app-menuitem」的項目列表。

<app-menu items="menuitems"> 

在這是一個json的menuitems中,你有一個名爲「isactive」的menu屬性的屬性,它是一個布爾值。

$scope.menuitems = [{ label : 'menuitem 1', isactive : true},{ label : 'menuitem 1', isactive : false}] 

在菜單項組成:

angular.module('app') 
    .component('appMenuitem', { 
     transclude: false, 
     controller: menuitemController, 
     bindings: { 
     label: '@', 
     isactive: '@' //<--- The problem is here because the boolean is converted as string 
     }, 
     templateUrl: 'angular/components/simple/menuitem/menuitem.html' 
    }); 

我不知道,以確保在年底最好的辦法就是真正的布爾值,而不是一個字符串,它讓我的一些錯誤。任何人有想法?

回答

15

在角1.5起,可以使用< & @單程結合。這兩者之間的主要區別在於<能夠將其原始數據類型的對象傳遞給組件。

isactive: '<' 
4

只需使用單向綁定,而不是一個字符串綁定:

angular.module('app') 
    .component('appMenuitem', { 
     transclude: false, 
     controller: menuitemController, 
     bindings: { 
     label: '@', 
     isactive: '<' 
     }, 
     templateUrl: 'angular/components/simple/menuitem/menuitem.html' 
    }); 
相關問題