2012-09-30 35 views
8

Tôi làm cách nào để phát một đối tượng thông qua sự kiện?Làm cách nào để phát một đối tượng trong Angularj?

Hiện nay tôi đang cố gắng:

app.run ($rootScope) -> 
    message = {type: 'channel', action: 'create', data: { name: "ssss", id: 0}} 
    $rootScope.$broadcast('message', message) 

angular.module('WebChat').controller 'ChannelController', ($scope) -> 
    $scope.$on 'message', (message) -> 
     console.log message 
     console.log 'hi' 

Nhưng tôi nhận được không có đầu ra

Sửa tôi nhận nó làm việc. Có vẻ như tham số đầu tiên của hàm gọi lại là phạm vi. Tôi đã phải thay đổi bộ điều khiển để:

angular.module('WebChat').controller 'ChannelController', ($scope) -> 
    $scope.$on 'message', (scope, message) -> 
     console.log message 
     console.log 'hi' 

Trả lời

7

Bạn đang nhận được không có đầu ra trong trường hợp của bạn vì bạn là phát sóng trước khi một bộ điều khiển đã sẵn sàng để chấp nhận các thông điệp. Phương thức chạy của mô-đun được thực hiện rất sớm trong vòng đời của ứng dụng, trước khi phạm vi của bộ điều khiển sẵn sàng để nghe tin nhắn.

Đây là jsFiddle minh họa này, đánh dấu vào giao diện điều khiển để xem phát sóng điều đó xảy ra trước khi một người biết lắng nghe sẵn sàng: http://jsfiddle.net/vPq2P/3/

+1

Tôi có một tình huống tương tự, mà tôi cần phải [tải YouTube IFrame API] (https://developers.google.com/youtube/iframe_api_reference#Getting_Started). Tôi đã thử đặt mã tải bên trong run() cũng như bên ngoài cố gắng tải nó cuối cùng, nhưng không có vấn đề nơi tôi đặt nó phát sóng luôn luôn xảy ra trước khi bộ điều khiển của tôi sẵn sàng nghe, trừ khi tôi hết thời gian chờ 1000 hoặc hơn (1500 dường như hoạt động tốt nhất). Có cách nào để đảm bảo đúng thứ tự nghe-> phát mà không sử dụng hết thời gian chờ không? Tôi biết câu hỏi của tôi có vẻ hơi mơ hồ, nhưng tôi có thể cung cấp thêm chi tiết nếu cần. Cảm ơn. – braincomb

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