Tôi đang sử dụng góc 1,5 và tôi muốn trích xuất một phần DOM của mình thành một component.
Dưới đây là những gì tôi đã làm cho đến nay:
angular.module('my-app').component("menuItem",{
templateUrl : "lib/menu-item.tmpl.html",
bindings : {
index : "<",
first : "<",
last : "<",
item : "=",
onDelete : "&",
onMoveUp : "&",
onMoveDown : "&"
},
controller : function($scope) {
}
});
Và mẫu trông giống như vậy:
<div>
<aside class="sort-buttons">
<ul>
<li>
<button ng-click="$ctrl.onMoveUp({index : $ctrl.index})"
ng-disabled="$ctrl.first">
<i class="icon icon-up"></i>
</button>
</li>
<li>
<button ng-click="$ctrl.onMoveDown({index : $ctrl.index})"
ng-disabled="$ctrl.last">
<i class="icon icon-down"></i>
</button>
</li>
</ul>
</aside>
<div class="row">
<button class="btn btn-danger btn-icon btn-remove"
ng-click="$ctrl.onDelete({index : $ctrl.index})">
<i class="icon icon-remove"></i>
</button>
</div>
</div>
Tôi sử dụng thành phần này (! Xa xong) như sau:
<section class="container menu">
<menu-item index="$index" first="$first" last="$last" item="item"
on-delete="removeItem(index)"
on-move-up="moveItemUp(index)"
on-move-down="moveItemDown(index)"
ng-repeat="item in menu">
</menu-item>
<!-- some other display details of `$ctrl.item` -->
</section>
Tôi có ba câu hỏi chính tôi đoán:
- Tại sao tôi phải sử dụng
$ctrl
ở mọi nơi trong mẫu của mình? Có$scope
vậy tại sao tất cả các ràng buộc đi đến$ctrl
thay vì$scope
? Và có cách nào để thay đổi điều này không? - Tôi có thể bằng cách nào đó có các giá trị như
$index
,$first
và$last
được chuyển vào không? Dường như với tôi như nó là một "bơ bơ" để truyền chúng vào ... - Đây có phải là phương pháp phù hợp không? Hoặc tôi nên sử dụng chỉ thị? Tôi biết các thành phần có phạm vi phân lập và các chỉ thị có thể có phạm vi không bị cô lập. nhưng tôi có thể trộn/kết hợp trong một chỉ thị (chia sẻ phạm vi với bộ điều khiển, nhưng cũng thêm các chức năng của riêng tôi để chỉ sử dụng trong chỉ thị/mẫu?)
Cảm ơn sự giúp đỡ của bạn.
Nhận xét sẽ đẹp nếu bạn bỏ phiếu? –