Có lẽ bạn đang bối rối một bộ điều khiển được tạo khi thay đổi tuyến đường xảy ra với bộ điều khiển chỉ thị. Phần đó chỉ nói về các bộ điều khiển chỉ thị, vì vậy phần đó có nghĩa là nếu bạn có hai chỉ thị trên cùng một phần tử HTML, chúng có thể giao tiếp bằng cách yêu cầu các bộ điều khiển khác.
Một ví dụ điển hình là nếu bạn tạo chỉ thị cần liên lạc với ng-model
. Kể từ ng-model
cho thấy một bộ điều khiển, bạn có thể yêu cầu nó như thế này:
myApp.directive('myDirective', function() {
return {
require: 'ngModel',
link: function($scope, elem, attrs, ngModelCtrl) {
// Here you can listen to different DOM events, and
// call ngModelCtrl when the model value needs to update
}
}
});
Và HTML:
<input type="text" ng-model="myModel" my-directive>
chỉ thị của bạn có thể tiếp xúc với một bộ điều khiển bằng cách thực hiện nó trong đối tượng mà bạn trở về chức năng chỉ thị, như này:
myApp.directive('myDirective1', function() {
return {
link: function($scope, elem, attrs) {
},
controller: function() {
this.sayHello = function() {
alert("hello!");
}
}
}
});
myApp.directive('myDirective2', function() {
return {
require: 'myDirective1',
link: function($scope, elem, attrs, myDirective1Ctrl) {
myDirective1Ctrl.sayHello();
}
}
});
Và HTML:
<input type="text" my-directive2 my-directive1>
Bạn cũng có thể yêu cầu một bộ điều khiển chỉ thị từ một chỉ thị mẹ bằng cách viết require: '^myParentDirective'
, như thế này:
myApp.directive('myDirective1', function() {
return {
link: function($scope, elem, attrs) {
},
controller: function() {
this.sayHello = function() {
alert("hello!");
}
}
}
});
myApp.directive('myDirective2', function() {
return {
require: '^myDirective1',
link: function($scope, elem, attrs, myDirective1Ctrl) {
myDirective1Ctrl.sayHello();
}
}
});
Và HTML:
<div my-directive1>
<div my-directive2></div>
</div>
Kiểm tra [câu hỏi này] (http: // stackoverflow. com/questions/14915332/what-does-require-of-directive-definition-object-take) và [ví dụ này] (http://jsfiddle.net/bmleite/GSZkJ/). – bmleite
Theo kịp các câu hỏi hay. – Stewie
[ví dụ] (http://jsfiddle.net/bmleite/GSZkJ/) là một chút gây hiểu nhầm. ở cái nhìn đầu tiên nó xuất hiện để được chia sẻ các trường hợp điều khiển '' num 'tài sản. khi điều duy nhất thực sự xảy ra là chỉ thị bên trong là sao chép hàm gia tăng từ thể hiện điều khiển chỉ thị bên ngoài đến đối tượng phạm vi mà cả bên trong và bên ngoài chia sẻ. khi nó được gọi từ mẫu này, hãy == đối tượng phạm vi. xem [ví dụ tinh chỉnh] này (http://jsfiddle.net/fess/a68Ra/) để minh họa các điểm đó. –