Tôi có một chỉ thị biểu mẫu sử dụng một callback
thuộc tính được chỉ định với phạm vi cô lập:
scope: { callback: '&' }
Nó nằm bên trong một ng-repeat
biểu thức mà tôi truyền vào bao gồm id
đối tượng làm đối số cho hàm gọi lại:
<directive ng-repeat = "item in stuff" callback = "callback(item.id)"/>
Khi tôi hoàn thành lệnh này, nó gọi $scope.callback()
từ chức năng điều khiển của nó. Đối với hầu hết các trường hợp, điều này là tốt, và đó là tất cả những gì tôi muốn làm, nhưng đôi khi tôi muốn thêm một đối số khác từ bên trong directive
chính nó.
Có một biểu thức góc nào cho phép điều này : $scope.callback(arg2)
, dẫn đến callback
được gọi bằng arguments = [item.id, arg2]
?
Nếu không, cách gọn gàng nhất để làm điều này là gì?
Tôi đã thấy rằng điều này hoạt động:
<directive
ng-repeat = "item in stuff"
callback = "callback"
callback-arg="item.id"/>
Với
scope { callback: '=', callbackArg: '=' }
và lệnh gọi
$scope.callback.apply(null, [$scope.callbackArg].concat([arg2, arg3]) );
Nhưng tôi không nghĩ nó đặc biệt gọn gàng và nó liên quan đến việc đưa thêm những thứ khác vào phạm vi cô lập.
Có cách nào tốt hơn?
Sân chơi Plunker ở đây (mở giao diện điều khiển).
ng
API, ví dụ, ng-click="someFunction()"
một biểu thức đánh giá việc thực thi một chức năng.
$scope.callback
được đặt bởi callback="someFunction"
thuộc tính và thuộc tính scope: { callback: '=' }
của đối tượng định nghĩa chỉ thị. $scope.callback
là một chức năng được gọi vào một ngày sau đó. Giá trị thuộc tính thực tế rõ ràng là một chuỗi - luôn luôn như vậy với HTML.