loopback/example/browser/client.js

73 lines
1.5 KiB
JavaScript

// client app
var app = loopback();
app.dataSource('api', {
connector: loopback.Server,
host: 'localhost',
port: 3000,
base: '/api',
discover: loopback.remoteModels
});
app.dataSource('local', {
connector: loopback.Memory
});
var Color = loopback.getModel('Color');
var LocalColor = app.model('LocalColor', {
dataSource: 'local',
options: {trackChanges: true}
});
LocalColor.beforeCreate = function(next, color) {
color.id = Math.random().toString().split('.')[1];
next();
}
function replicate() {
LocalColor.currentCheckpoint(function(err, cp) {
setTimeout(function() {
LocalColor.replicate(cp, Color, {}, function() {
console.log('replicated local to remote');
});
}, 0);
});
}
LocalColor.on('deleted', replicate);
LocalColor.on('changed', replicate);
LocalColor.on('deletedAll', replicate);
setInterval(function() {
Color.currentCheckpoint(function(err, cp) {
Color.replicate(cp, LocalColor, {}, function() {
console.log('replicated remote to local');
});
});
}, 1000);
function ListCtrl($scope) {
LocalColor.on('changed', update);
LocalColor.on('deleted', update);
function update() {
LocalColor.find({sort: 'name'}, function(err, colors) {
$scope.colors = colors;
console.log(colors);
$scope.$apply();
});
}
$scope.add = function() {
LocalColor.create({name: $scope.newColor});
$scope.newColor = null;
}
$scope.del = function(color) {
color.destroy();
}
update();
}