2014-12-30 16 views
12

Đây có phải là cách giao tiếp chính xác giữa hai thành phần là anh chị em trong phạm vi không?Giao tiếp giữa các phạm vi anh chị em trong Angular

  1. Ctrl1 phát sự kiện lên đến phạm vi gốc của cả Ctrl1 và Ctrl2.
  2. Phạm vi của cha mẹ lắng nghe sự kiện phát ra từ Ctrl1, sau đó phát một sự kiện khác xuống Ctrl2.
  3. Ctrl2 lắng nghe sự kiện được phát từ phạm vi gốc.

diagram

Trả lời

5

Vâng, đây là cách tôi giao tiếp giữa phạm vi anh chị em trong góc. Thông thường tôi nghĩ rằng Ctrl1 như phát ra 'lên' cho tất cả các phạm vi hậu duệ của nó và 'trên' một phạm vi phụ huynh nghe sự kiện, phạm vi phụ huynh phát sóng 'xuống' cho tất cả các phạm vi trẻ em. Trong trường hợp này, Ctrl2 phải có thứ gì đó được thiết lập trên 'bật' để làm điều gì đó khi nó nghe sự kiện.

Là một mặt lưu ý, tôi đã thực hiện một cái gì đó tương tự mà tôi đã sử dụng rootScope như một chiếc xe buýt sự kiện tập trung, nơi nó nghe đứa trẻ khác nhau các sự kiện quy mô và sau đó thực hiện một số nhiệm vụ hoặc chương trình phát sóng xuống một lần nữa. Các phạm vi trẻ em sau đó sẽ chịu trách nhiệm chỉ đơn giản là phát ra đến rootScope.

4

Vâng - bạn không cần kỹ thuật $emit khi liên lạc lên với bộ điều khiển chính, trẻ có quyền truy cập. Nhưng bạn không cần $broadcast khi giao tiếp xuống đến một phạm vi con:

app.controller("parentCtrl", function($scope) { 
    $scope.testMe = function() { 
     $scope.$broadcast("done"); //transmit to ctrl2 
    } 
}); 

app.controller("childCtrl1", function($scope) { 
    $scope.testMe(); //call parent 
}); 

app.controller("childCtrl2", function($scope) { 
    $scope.$on("done", function() { 
     alert("Caught parent event"); 
    }); 
}); 
+2

gì nếu phạm vi trong 'childCtrl1' thực sự cô lập phạm vi của một chỉ thị? – core

Các vấn đề liên quan