JSFiddle - React, Tailwind, and code Playground

by marionettejs

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.2/jquery.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/backbone.js/1.3.2/backbone-min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/backbone.radio/2.0.0-pre.2/backbone.radio.js"></script>
<script src="https://rawgit.com/marionettejs/backbone.marionette/next/lib/backbone.marionette.js"></script>

JavaScript

const { bindEvents, unbindEvents } = Marionette; // import { bindEvents, unbindEvents } from 'backbone.marionette';

const model = new Backbone.Model();

const MyView = Backbone.View.extend({
  modelEvents: {
    'change:foo': 'doSomething'
  },

  initialize(){
    bindEvents(this, this.model, this.modelEvents);
  },

  doSomething() {
    console.log('change:foo event was fired');
  },
  
  someViewFunction() {
  	unbindEvents(this, this.model, this.modelEvents);
  }
});

const myView = new MyView({model});

model.trigger('change:foo');
myView.someViewFunction();
model.trigger('change:foo'); //will not be handled in MyView