2013-09-05 26 views
8

Tôi có hai trường hợp chỉ thị. Có cách giao tiếp giữa hai trường hợp không? Hoặc tôi có thể đặt một biến toàn cầu mà tất cả các phiên bản sẽ chia sẻ cùng một giá trị.Cách tốt nhất để liên lạc giữa các trường hợp chỉ thị

Tôi đã cố gắng lưu trữ giá trị trong một dịch vụ. Khi giá trị trong một cá thể thay đổi, thì các phiên bản khác sẽ được cập nhật theo cách thủ công. Nhưng tôi không chắc đây có phải là cách tốt nhất hay không.

Cảm ơn.

+0

Làm thế nào về '$ broadcast'? http://docs.angularjs.org/api/ng.$rootScope.Scope#$broadcast –

Trả lời

11

Bản thân nhà máy chỉ thị là bản đơn. Bất cứ điều gì bạn khai báo bên ngoài đối tượng định nghĩa sẽ là toàn cục đối với tất cả các cá thể. Vì mỗi cá thể có phạm vi riêng của nó, nên dữ liệu cá thể cụ thể sẽ nằm trong phạm vi. Vì vậy, một cái gì đó như thế này:

angular.module("myApp", []) 

.directive("myDir", function() { 
    var myGlobal = 0; 

    return { 
     template: '<div>Global: {{getGlobal()}}, Local: {{local}} -- <a href="" ng-click="increment()">Increment</a></div>', 
     scope: {}, 
     link: function(scope, element, attrs) { 
      scope.local = 0; 
      scope.increment = function() { 
       scope.local++; 
       myGlobal++; 
      } 
      scope.getGlobal = function() { 
       return myGlobal; 
      } 
     } 
    } 
}); 

http://jsfiddle.net/7YwDS/

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