15

Angular 1.5 でコンポーネントを使用する場合、@ を使用して文字列として変換せずにブール値である属性をバインドする簡単な方法があるかどうかを知りたいです。

たとえば、「app-menu」と「app-menuitem」という 2 つのコンポーネントがトランスクルードなしであるとします。「app-menu」には、「app-menuitem」を作成する項目のリストを含む 1 つの属性しかありません。

<app-menu items="menuitems">

json である menuitems には、ブール値である「isactive」という名前の menuitem による属性があります。

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

最後に、バグを引き起こす文字列ではなく、実際のブール値であることを確認する最善の方法がわかりません。誰にもアイデアがありますか?

4

3 に答える 3

6

文字列バインディングの代わりに一方向バインディングを使用してください。

angular.module('app')
    .component('appMenuitem', {
      transclude: false,
      controller: menuitemController,
      bindings: {
        label: '@',  
        isactive: '<'
      },
      templateUrl: 'angular/components/simple/menuitem/menuitem.html'
    });
于 2016-04-16T17:16:36.943 に答える