10

Mi piacerebbe sapere se in Angular 1.5, quando si usano componenti, esiste un modo semplice per associare un attributo che è un valore booleano senza essere convertito come stringa con @.In Angular 1.5, come associare un componente attributo come booleano?

Ad esempio, ho due componenti "app-menu" e "app-menuitem" senza transclude. "app-menu" ha solo un attributo con è un elenco di elementi per creare "app-menuitem".

<app-menu items="menuitems"> 

nelle menuitems che è un JSON, voi hanno un attributo da MenuItem denominato "isActive", che un valore booleano.

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

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

non so il modo migliore per essere sicuri che alla fine è un vero e proprio valore booleano, non una stringa che mi fa alcuni bug. Qualcuno ha un'idea?

risposta

15

In angolare 1.5 in poi è possibile utilizzare < & @ per un modo vincolante. La differenza principale tra questi due è < ha la capacità di passare un oggetto con il suo tipo di dati originale al componente.

isactive: '<' 
4

basta usare un senso unico vincolante invece di una stringa vincolante:

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