<!DOCTYPE html>
<html>
<head>
<script src="https://cdn.rawgit.com/js-data/js-data/master/dist/js-data.js"></script>
<script src="script.js"></script>
</head>
<body>
<h1>Open up your console to see the output</h1>
</body>
</html>
var store = new JSData.DS();
var User = store.defineResource({
name: 'user',
computed: {
fullName: ['first', 'last',
function(first, last) {
return first + ' ' + last;
}
]
}
});
var user = User.createInstance({
first: 'John',
last: 'Doe'
});
console.log('user (not injected)', JSON.stringify(user, null, 2));
console.log('user.fullName: ' + user.fullName); // undefined
console.log('run User.compute(user);');
User.compute(user);
console.log('user.fullName: ' + user.fullName); // "John Doe"
var user2 = User.inject({
id: 2,
first: 'Jane',
last: 'Doe'
});
console.log('user2 (injected)', JSON.stringify(user2, null, 2));
console.log('user2.fullName: ' + user2.fullName); // "Jane Doe"
console.log('run User.compute(1);');
User.compute(1);
console.log('user2.fullName: ' + user2.fullName); // "Jane Doe"
// if you don't pass useClass: false then you can do:
var user3 = User.createInstance({
first: 'Sally',
last: 'Doe'
});
console.log('user3 (not injected)', JSON.stringify(user3, null, 2));
console.log('user3.fullName: ' + user3.fullName); // undefined
console.log('run user3.DSCompute();');
user3.DSCompute();
console.log('user3.fullName: ' + user3.fullName); // "Sally Doe"
## DS#compute(resourceName, instance)
Force the given instance or the item with the given primary key to recompute its computed properties.
###### Arguments
| name | type | description |
| ---- | ---- | ----------- |
| resourceName | string | The name of the resource to use. Unnecessary if using the resource directly. |
| instance | object or string or number | Instance or primary key of the instance (must be in the store) for which to recompute properties. |
###### Examples
```js
var User = store.defineResource({
name: 'user',
computed: {
fullName: ['first', 'last', function (first, last) {
return first + ' ' + last;
}]
}
});
var user = User.createInstance({ first: 'John', last: 'Doe' });
user.fullName; // undefined
User.compute(user);
user.fullName; // "John Doe"
var user2 = User.inject({ id: 2, first: 'Jane', last: 'Doe' });
user2.fullName; // undefined
User.compute(1);
user2.fullName; // "Jane Doe"
// if you don't pass useClass: false then you can do:
var user3 = User.createInstance({ first: 'Sally', last: 'Doe' });
user3.fullName; // undefined
user3.DSCompute();
user3.fullName; // "Sally Doe"
```