Namespace: masseuse/ProxyProperty

masseuse/ProxyProperty

A ProxyProperty will allow a field on a model to depend on a field on another model. See tests for use case.

Proxy Properties are properties on a model that are equal to properties on another model. The link is two way, so if one property changes, the other changes with it.

For example if you have a User and Permissions model, and you want the User model to stay up to date with the role in Permission.

var permissions = new Backbone.Model({
                           role: 'admin'
}),
user = new Backbone.Model({
                           name: 'Jane',
                           role: ProxyProperty('role', permissions)
});

console.log('admin' === user.get('role');

permissions.set('role', 'superuser');
console.log('superuser' === user.get('role');

user.set('role', 'consultant');
console.log('consultant' === permissions.get('role');

Nested Properties:

Proxy Properties can be infinitely nested references.

model1.set('object.nestedObject.tripleNested', 'Papas Emeritus');
model2.set('popeName', new ProxyProperty('object.nestedObject.tripleNested', model1));
console.log(model2.get('popeName')); ==> Papas Emeritus

model2.set('popeName', 'Papas Victorious');
console.log(model1.get('object.nestedObject.tripleNested')); ==> Papas Victorious

Tests:

Proxy Properties are tested in masseuseModelTests.js.

Source: