10

Chciałbym wiedzieć, czy w Angular 1.5, gdy używasz komponentów, istnieje prosty sposób wiązania atrybutu, który jest boolowskim, bez konwersji na ciąg znaków z @.W Angular 1.5, jak powiązać komponent atrybutu jako boolean?

Na przykład mam dwa składniki "app-menu" i "app-menuitem" bez transclude. "app-menu" ma tylko jeden atrybut z listą elementów do stworzenia "app-menuitem".

<app-menu items="menuitems"> 

w menuitems co jest JSON, masz atrybut przez menuitem nazwie „isactive” których wartość logiczną.

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

W składniku menuitem:

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' 
    }); 

nie wiem najlepszy sposób, aby mieć pewność co do końca jest prawdziwa wartość logiczna, a nie ciąg znaków, który sprawia mi jakieś błędy. Ktoś ma pomysł?

Odpowiedz

15

W kątowym 1,5 roku można użyć < & @ dla jednej wiążącej sposób. Główną różnicą między tymi dwoma jest < ma zdolność przekazywania obiektu z oryginalnym typem danych do komponentu.

isactive: '<' 
4

Wystarczy użyć zamiast wiązania łańcucha wiążącego Wylot:

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