JSFiddle - React, Tailwind, and code Playground
HTML
<script src="https://unpkg.com/moonjs"></script>
<div id="app">{{msg}}</div>
JavaScript
var MoonTracked = {
init: function(Moon) {
var init = Moon.prototype.init;
Moon.prototype.init = function() {
var data = this.$data;
var self = this;
var track = function(key) {
Object.defineProperty(self, key, {
get: function(key) {
return data[key];
},
set: function(val) {
self.set(key, val);
}
});
}
for(var key in data) {
track(key);
}
init.apply(this, arguments);
}
}
}
Moon.use(MoonTracked);
var app = new Moon({
el: "#app",
data: {
msg: "Hello Moon!"
}
});
app.msg = "Changed!";