Ответ 1
В angular 1.5 вы можете использовать <
и @
для односторонней привязки. Основное отличие между этими двумя: <
имеет возможность передать объект с его исходным типом данных в компонент.
isactive: '<'
Я хотел бы знать, если в 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'
});
Я не знаю, что лучший способ быть уверенным в конце - это реальное логическое, а не строка, которая вызывает у меня некоторые ошибки. У кого-нибудь есть идея?
В angular 1.5 вы можете использовать <
и @
для односторонней привязки. Основное отличие между этими двумя: <
имеет возможность передать объект с его исходным типом данных в компонент.
isactive: '<'
Просто используйте одностороннюю привязку вместо привязки строки:
angular.module('app')
.component('appMenuitem', {
transclude: false,
controller: menuitemController,
bindings: {
label: '@',
isactive: '<'
},
templateUrl: 'angular/components/simple/menuitem/menuitem.html'
});