Tôi đã biết rằng bạn có thể thiết lập bộ điều khiển trong chỉ thị và các chỉ thị khác có thể gọi các chức năng trên bộ điều khiển đó. Đây là những gì chỉ hiện tại của tôi trông giống như:Thông tin liên lạc chỉ thị trong AngularJS?
app.directive("foobar", function() {
return {
restrict: "A",
controller: function($scope) {
$scope.trigger = function() {
// do stuff
};
},
link: function(scope, element) {
// do more stuff
}
};
});
tôi biết rằng tôi có thể gọi nó như thế này:
app.directive("bazqux", function() {
return {
restrict: "A",
require: "foobar",
link: function(scope, element, attrs, fooBarCtrl) {
fooBarCtrl.trigger();
}
};
});
Tuy nhiên, tôi muốn để có thể gọi kích hoạt từ bất kỳ chỉ thị, không chỉ tùy chỉnh của riêng tôi, như sau:
<button ng-click="foobar.trigger()">Click me!</button>
Nếu điều đó không có tác dụng, có cách nào đưa chỉ thị thứ ba để thực hiện điều đó không? Như thế này?
<button ng-click="trigger()" target-directive="foobar">Click me!</button>
Cảm ơn!
Điều này thật tuyệt. Làm việc như một say mê! –
Đừng làm điều này, nó sẽ gây ô nhiễm rootscope, tạo một dịch vụ hoặc có thể yêu cầu chỉ thị. –
chỉ ra '$ rootScope' gotchas: http://jsfiddle.net/drzaus/a1gm7q4u/ về cơ bản giống như @ WillemD'haeseleer đã nói, bạn có thể nhận được phản ứng phụ gửi mọi thứ lên/xuống từ' $ rootScope' nếu khác "bị cô lập" phạm vi đang lắng nghe cùng một điều (tức là chỉ thị lặp đi lặp lại hoặc bộ điều khiển) – drzaus