Eine eigene jComponent schreiben
Eine Komponente wird mit COMPONENT(name, config, declaration) deklariert. Das zweite Argument ist die Standardkonfiguration als String (key:value;key:value). Die Deklaration erhält self (die Komponenteninstanz) und config (die geparste Konfiguration).
self.makeläuft einmal, wenn die Komponente erstellt wird. Baue hier das DOM auf.self.setter(value)läuft jedes Mal, wenn sich der Wert despathder Komponente ändert.self.set(value)schreibt einen neuen Wert in denpath;self.get()liest ihn.
Nutze die Komponente mit einem <ui-component>-Element. name wählt die Deklaration, path den State und config überschreibt die Standardwerte.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>jComponent</title>
<link rel="stylesheet" href="//cdn.componentator.com/spa.min@20.css" />
<script src="//cdn.componentator.com/spa.min@20.js"></script>
</head>
<body>
<ui-component name="counter" path="cart.count" config="step:2"></ui-component>
<p>Total: <ui-bind path="cart.count" config="text:value"></ui-bind></p>
<script>
COMPONENT('counter', 'step:1', function(self, config) {
self.make = function() {
self.html('<button type="button">Add</button> <b class="value">0</b>');
self.event('click', 'button', function() {
self.set((self.get() || 0) + config.step);
});
};
self.setter = function(value) {
self.find('.value').text(value || 0);
};
});
SET('cart.count', 10);
</script>
</body>
</html>Das ui-bind neben der Komponente zeigt, dass beide denselben State lesen: Ein Klick auf den Button ändert den Pfad, und jedes daran gebundene Element aktualisiert sich.
Probiere es in deinem Browser aus
Bearbeite das Beispiel und führe es aus. Es läuft in einem isolierten Frame in deinem Browser; nichts wird an unseren Server gesendet.
Vorschau