2013-08-17 30 views
8

Có cách nào để nắm bắt các chương trình phát sóng phạm vi bằng cách sử dụng các ký tự đại diện trên AngularJS không?

Ví dụ:

$rootScope.$on('*created', function() { // do stuff });

Trả lời

18

Trong mã nguồn js góc, $on được định nghĩa như sau:

$on: function(name, listener) { 
    var namedListeners = this.$$listeners[name]; 
    if (!namedListeners) { 
     this.$$listeners[name] = namedListeners = []; 
    } 
    namedListeners.push(listener); 

    return function() { 
    namedListeners[indexOf(namedListeners, listener)] = null; 
    }; 
}, 

từ this.$$listeners là một mảng kết hợp, và các mảng kết hợp trong javascript không dùng regexs là chìa khóa, điều này gợi ý rằng câu trả lời ngắn gọn là "không bạn không thể".

+0

Vâng, đó là những gì tôi mặc dù. Mặc dù vậy, nó sẽ rất tuyệt. Tôi đang cố gắng thực hiện một "thông báo thông minh" cho các thông báo về sự thành công/thất bại của việc tạo ra các thực thể. Bây giờ tôi đang đào qua mã ngResource để xem liệu tôi có thể kết nối một cái gì đó trên tài nguyên '$ save' /' $ get' và các phương thức như vậy hay không. Cảm ơn! –

0

Không ra khỏi hộp, nhưng .. Bạn có thể tạo hàm trợ giúp customOn() và sử dụng hàm đó thay vì $ trên. customOn() có thể thực hiện một regex trên tên sự kiện và gửi bất kỳ sự kiện nào.

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