2011-07-20 28 views
9

Tôi có hai chế độ xem, vì đơn giản vì lợi ích của cha mẹ/con. Đứa trẻ đang sử dụng kích hoạt để ném một sự kiện. Tôi không nhìn thấy nó trong xử lý của phụ huynh. Dưới đây có hợp lệ không?Backbone.JS Sự kiện tùy chỉnh từ Chế độ xem trẻ em

var parent = Backbone.View.extend({ 
    events: { "childevent": "run" }, 
    run: function(e) { 
     console.log(e); 
    }, 
    render: function() { /* render the child here */ } 
}); 

var child = Backbone.View.extend({ 
    someAction: function() { this.trigger('childevent'); } 
}); 

Trả lời

18

Đã tìm ra! $(this.el).trigger('childevent'); hoạt động.

+0

cảm ơn bạn đã đăng giải pháp của mình !! – Kirk

+0

wrapper $() là những gì tôi đã mất tích. cảm ơn! – gthmb

+3

bạn cũng có thể thử điều này. $ El cho thuộc tính jQuery đã lưu trong bộ nhớ cache – Gus

2

Không nên là events: { "childevent": "run" } thay thế? Không có cách nào để truy cập chức năng ẩn danh thực sự ở nơi này trong mã.

+0

Tôi thực sự đã có điều đó, tuy nhiên nó vẫn không hoạt động, tôi chỉ cần gõ nó sai ở đây. Nắm bắt tốt. –

2

Xương sống lưu trữ tham chiếu jQuery vào nút của chế độ xem trong thuộc tính this.$el để bạn có thể sử dụng hiệu suất sử dụng nó thay vì tính lại tham chiếu theo $(this.el).

// use "this.$el.trigger()" to refer to jQuery's object 
this.$el.trigger('childevent'); 
1

Rõ ràng muộn, nhưng đối với bất kỳ ai khác đi qua này:

các sự kiện bất động sản trên một cái nhìn là để tự động ràng buộc Html DOM sự kiện từ các thành phần trong các quan điểm các yếu tố el hoặc $ el, và cú pháp liên quan đến cả một sự kiện UI và một selector là chìa khóa trong cặp:

sự kiện: { "nhấp #someButton", "clickHandler"}

để nghe các sự kiện từ mô hình hoặc xem khác, bạn sử dụng này. listenTo (mục tiêu, .....)

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