See ReactComponentView
and BackboneModelWatchMixin
, below.
The BackboneModelWatchView
could use some additional methods to allow adding/removing watched models after the component is created.
// marionette_ticket_view.js
var Marionette = require("marionette"),
ReactComponentView = require("./mixins/react_component_view"),
TicketViewComponent = require("./ticket_view_component");
module.exports = Marionette.View.extend(ReactComponentView).extend({
initialize: function(options) {
this.ticket = options.model;
},
getReactComponent: function() {
return TicketViewComponent({ticket: this.ticket});
}
});
// ticket_view_component.js
var React = require("react"),
BackboneModelWatchMixin = require("./mixins/backbone_model_watch_mixin"),
Ticket = require("./models/ticket");
var MyReactComponent = React.createClass({
mixins: [BackboneModelWatchMixin],
propTypes: {
ticket: React.PropTypes.instanceOf(Ticket).isRequired
},
getBackboneModels: function() {
return [this.props.ticket, this.props.ticket.get("comments")];
},
render: function() {
if (this.props.ticket.isComplete()) {
return <div>...</div>;
} else {
return <div onClick={this.completeTicket}>...</div>;
}
},
completeTicket: function() {
this.props.ticket.complete();
}
});
module.exports = MyReactComponent;