Propagable - Entity subclass that provides clone/propagation
by JayData
HTML
<script src="http://include.jaydata.org/jaydata.js"></script>
JavaScript
//Create the Propagable class to extend $data.Entity with your base logic
var Propagable = $data.Entity.extend("Propagable", {
constructor: function (initData) {
this.getSource = function () {
return initData;
}
},
propagate: function () {
var source = this.getSource();
var self = this;
this.changedProperties.forEach(function (prop) {
source[prop.name] = self[prop.name];
});
}
});
var Order = Propagable.extend("Order", {
Id: { key: true, type: 'int', computed: true},
Product: {
type: 'string'
}
});
var MyContext = $data.EntityContext.extend("CTX", {
Orders: {
type: $data.EntitySet,
elementType: Order
}
});
var context = new MyContext({
provider: 'local'
});
context.onReady(function () {
var o = new Order({
Product: 'abc'
});
var o2 = new Order(o);
context.Orders.add(o);
o2.Product = "def";
o2.propagate();
context.saveChanges(function () {
alert("item saved:" + o.Product);
});
});