2012-06-28 13 views
5
events: 
    'click textarea': 'composeComment' 
    'click .submit': 'submit' 
    'blur textarea': 'textareaBlur' 
    'resize article': 'repositionBoards' 


repositionBoards: -> 
    #this is my own function, i just need it to be called everytime an article's size changes 
    board.align() 

Làm cách nào để nhận phương thức repositionBoards được gọi là thay đổi kích thước sự kiện?Làm cách nào để thêm sự kiện thay đổi kích thước vào bài viết trong xương sống?

Trả lời

8

Các resize event được gửi đến window:

Sự kiện resize được gửi đến các yếu tố window khi kích thước của cửa sổ trình duyệt thay đổi

Nhưng sự kiện một cái nhìn Backbone của được ràng buộc với quan điểm của el sử dụng delegate. Chế độ xem của el sẽ không nhận được sự kiện resize để đặt 'resize articule': 'repositionBoards' trong chế độ xem events của bạn sẽ không hoạt động tốt.

Nếu bạn cần phải nhận được sự kiện resize theo quan điểm của bạn, bạn sẽ phải ràng buộc nó vào window mình:

initialize: (options) -> 
    $(window).on('resize', this.repositionBoards) 
remove: -> 
    $(window).off('resize', this.repositionBoards) # Clean up after yourself. 
    @$el.remove() # The default implementation does this. 
    @ 
repositionBoards: -> 
    # Use => if you need to worry about what `@` is 
    board.align() 

Cũng lưu ý việc bổ sung một remove để bạn có thể xử lý unbind resize của bạn. Bạn sẽ, tất nhiên, muốn sử dụng view.remove() để xóa chế độ xem của bạn hoặc chỉ không lo lắng về nó nếu chế độ xem đó là toàn bộ ứng dụng của bạn.

+0

Cảm ơn bạn đã trả lời kỹ lưỡng. Mối quan tâm duy nhất của tôi là kích thước bài viết của tôi thay đổi khi văn bản được nhập vào chúng. Khi kích thước mở rộng, tôi muốn gọi các bảng định vị lại. Nhưng kể từ khi thay đổi kích cỡ được gửi đến cửa sổ, điều này làm tôi không tốt. Bạn có biết liệu có bất kỳ sự kiện nào có thể liên quan đến việc thay đổi kích thước của bài viết hoặc div không? Chỉ khi nó mở rộng như khi chiều cao hoặc chiều rộng tăng lên. Cảm ơn bạn lần nữa. –

+0

@ user1489926: Nhưng không có thay đổi kích thước sự kiện trên bất cứ điều gì khác ngoài cửa sổ, AFAIK bạn phải làm điều đó một cách khó khăn: http://stackoverflow.com/q/172821/479863 –