can-define.Map.backup is a plugin that provides a dirty bit for properties on an DefineMap, and lets you restore the original values of an DefineMap's properties after they are changed.
Here is an example showing how to use [can-define.Map.backup.prototype.backup backup]
to save values,
[can-define.Map.backup.prototype.restore restore]
to restore them, and [can-define.Map.backup.prototype.isDirty isDirty]
to check if the Map has changed:
var recipe = new DefineMap({
title: 'Pancake Mix',
yields: '3 batches',
ingredients: [{
ingredient: 'flour',
quantity: '6 cups'
},{
ingredient: 'baking soda',
quantity: '1 1/2 teaspoons'
},{
ingredient: 'baking powder',
quantity: '3 teaspoons'
},{
ingredient: 'salt',
quantity: '1 tablespoon'
},{
ingredient: 'sugar',
quantity: '2 tablespoons'
}]
});
defineBackup(recipe);
recipe.backup();
recipe.title = 'Flapjack Mix';
recipe.title; // 'Flapjack Mix'
recipe.isDirty(); // true
recipe.restore();
recipe.title; // 'Pancake Mix'
With StealJS, you can import this module directly in a template that is autorendered:
import defineBackup from 'can-define-backup';
Use require
to load can-define-backup
and everything else
needed to create a template that uses can-define-backup
:
var defineBackup = require("can-define-backup");
Configure the can
and jquery
paths and the can-define-backup
package:
<script src="require.js"></script>
<script>
require.config({
paths: {
"jquery": "node_modules/jquery/dist/jquery",
"can": "node_modules/canjs/dist/amd/can"
},
packages: [{
name: 'can-define-backup',
location: 'node_modules/can-define-backup/dist/amd',
main: 'lib/can-define-backup'
}]
});
require(["main-amd"], function(){});
</script>
Load the global
version of the plugin:
<script src='./node_modules/can-define-backup/dist/global/can-define-backup.js'></script>
To make a build of the distributables into dist/
in the cloned repository run
npm install
node build
Tests can run in the browser by opening a webserver and visiting the test.html
page.
Automated tests that run the tests from the command line in Firefox can be run with
npm test