import {Observer, Int, String} from 'typed_observer';
// ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ ΡΠΈΠΏΠ°, Π‘ΠΎΠ³Π»Π°Π½ΠΎ Π΅ΠΌΡ ΠΏΠΎΠ»Π΅ ΡΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ½ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΡΡΠΎΠ³ΠΎ ΡΠ°Π²Π½ΡΠ΅ true ΠΈΠ»ΠΈ false
var Bool = {
isValid(value) {
return value === true || value === false;
},
getValue(value) {
return value;
},
getPureValue(value) {
return value;
}
}
// ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ ΡΠΈΠΏΠ°, ΡΠΎΠ³Π»Π°ΡΠ½ΠΎ Π΅ΠΌΡ ΠΏΠΎΠ»Π΅ Π±ΡΠ΄Π΅Ρ ΡΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠΊΠ°Π·Π°Π½Π½ΡΠ΅ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅
function oneOf(arr) {
return {
isValid(value) {
return arr.indexOf(value) >= 0
},
getValue(value) {
return value;
},
getPureValue(value) {
return value;
}
}
}
/*********************************************************/
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΠΎΠ»Π΅
/*********************************************************/
var observer = new Observer();
observer.define('firstName', String, {required: true});
observer.define('age', Input);
observer.define('married', Bool);
observer.define('gender', oneOf([0,1])); // 0 - male, 1 - female
/*********************************************************/
// ΠΠΎΠ»Π±Π΅ΠΊ Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π»ΡΠ±ΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ
observer.onUpdate((dataHandler) => {
console.log(data);
});
// ΠΠΎΠ»Π±Π΅ΠΊ Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Ρ firstName
observer.onUpdate('firstName', (value, dataHandler) => {
console.log('firstName =', value);
});
observer.set('firstName', 'Josh') // Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π½Π°ΡΠ΅Π½ΠΈΡ
.freeze('firstName'); // Π·Π°ΠΌΠΎΡΠΎΠ·ΠΊΠ° ΠΏΠΎΠ»Ρ(ΠΏΠΎΠ»Π΅ Π½Π΅ ΡΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ)
observer.set('firstName', 'Mark');
observer.get('firstName'); // 'Josh'
observer.defreeze('firstName'); // ΡΠ°Π·ΠΌΠ°ΡΠΎΠ·ΠΊΠ° ΠΏΠΎΠ»Ρ
observer.set('firstName', 'Mark');
observer.get('firstName'); // 'Mark'
observer.lock('age'); // ΠΠ»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° Π²ΡΠ·ΠΎΠ²Π° ΠΊΠΎΠ»Π±Π΅ΠΊΠ°
// ΠΡΠ·ΡΠ²Π°ΡΡΡΡ Π½Π΅ Π±ΡΠ΄Π΅Ρ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π²ΡΠ·ΠΎΠ² Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ ΡΠ°Π½Π΅Π΅
observer.onUpdate('age', (value, dataHandler) => {
console.log('firstName =', value);
});
var data = observer.get();
data.firstName = 'Josh';
observer.get('firstName') // Josh
-
Notifications
You must be signed in to change notification settings - Fork 0
RegionLab/typed_observer
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Β | Β | |||
Β | Β | |||
Β | Β | |||
Β | Β | |||
Β | Β | |||
Β | Β | |||
Β | Β | |||
Β | Β | |||
Β | Β | |||
Β | Β | |||
Repository files navigation
About
No description, website, or topics provided.
Resources
Stars
Watchers
Forks
Releases
No releases published