0
0
0
<p data-behavior="counter">
<button data-behavior="increment">+</button>
<span data-behavior-target="number">0</span>
<button data-behavior="decrement">-</button>
</p>
$.behavior( 'counter' ).ifPresent(function( root, $root ) {
$root.on( 'updateNumber', function(_, number) {
root.target( 'number' ).text( number );
});
var setState = function(value) { this.data( 'state', value ) };
var getState = function() { return this.data( 'state' ) || 0 };
var updateNumberWith = function(value) {
return function() {
var number = getState.call( $root ) + value;
setState.call( $root, number );
$root.trigger( 'updateNumber', number );
};
};
var handleClickAndAdd = function(value) {
return function() {
this.on( 'click', updateNumberWith( value ) );
}
};
root.child( 'increment' ).ifPresent( handleClickAndAdd( 1 ) );
root.child( 'decrement' ).ifPresent( handleClickAndAdd( -1 ) );
});