update view.js to use listenTo instead of bind to prevent memory leaks