В Angular 1.5, как связать компонент атрибута как boolean?

Я хотел бы знать, если в Angular 1.5, когда вы используете компоненты, существует простой способ привязать атрибут, который является логическим, без преобразования в виде строки с @.

Например, у меня есть два компонента "app-menu" и "app-menuitem" без transclude. "app-menu" имеет только один атрибут, содержащий список элементов для создания "app-menuitem".

<app-menu items="menuitems">

в элементах меню, которые являются json, у вас есть атрибут по menuitem с именем "isactive", который имеет значение boolean.

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

В компоненте 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'
    });

Я не знаю, что лучший способ быть уверенным в конце - это реальное логическое, а не строка, которая вызывает у меня некоторые ошибки. У кого-нибудь есть идея?

Ответ 1

В angular 1.5 вы можете использовать < и @ для односторонней привязки. Основное отличие между этими двумя: < имеет возможность передать объект с его исходным типом данных в компонент.

isactive: '<'

Ответ 2

Просто используйте одностороннюю привязку вместо привязки строки:

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