10

Tôi muốn biết nếu trong Angular 1.5, khi bạn sử dụng các thành phần, có một cách đơn giản để ràng buộc một thuộc tính mà là một boolean mà không được chuyển đổi thành chuỗi với @.Trong Angular 1.5, làm thế nào để ràng buộc một thành phần thuộc tính như boolean?

Ví dụ: tôi có hai thành phần "menu ứng dụng" và "app-menuitem" không có transclude. "app-menu" chỉ có một thuộc tính với một danh sách các mục để tạo "app-menuitem".

<app-menu items="menuitems"> 

trong menuitem là json, bạn có thuộc tính bởi menuitem có tên "isactive" có giá trị logic.

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

Trong thành phần 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' 
    }); 

Tôi không biết cách tốt nhất để chắc chắn ở cuối là một boolean thực tế, không phải là một chuỗi mà làm cho tôi một số lỗi. Bất cứ ai có một ý tưởng?

Trả lời

15

Trong góc 1,5 trở đi bạn có thể sử dụng < & @ cho ràng buộc một cách. Điểm khác biệt chính giữa hai loại này là < có khả năng truyền đối tượng với kiểu dữ liệu ban đầu của nó tới thành phần.

isactive: '<' 
4

Chỉ cần sử dụng một chiều ràng buộc thay vì một chuỗi liên kết:

angular.module('app') 
    .component('appMenuitem', { 
     transclude: false, 
     controller: menuitemController, 
     bindings: { 
     label: '@', 
     isactive: '<' 
     }, 
     templateUrl: 'angular/components/simple/menuitem/menuitem.html' 
    }); 
Các vấn đề liên quan