/ / Existe-t-il un cadre pour la liaison de données et les événements en javascript / typescript? - javascript, wpf, texte dactylographié, liaison

Existe-t-il un cadre de liaison de données d'objet à objet et un cadre d'événement en javascript / typescript? - javascript, wpf, texte dactylographié, liaison

Comme celui-ci: https://github.com/errisy/bindable/blob/master/README.md

configurer la liaison de données avec de simples décorateurs dactylographiés.

Référence faible dans la liaison et l'événement avec la détection de changement de chemin.

Toutes les liaisons et les événements sont conservés en tant que "référence faible" ITrigger. Une fois que ITrigger.target est défini sur undefined, ITrigger sera supprimé par l'appelant.

Quand A.property se lie à (ou A.méthode écoute) A.branch.value, si A.branch est modifié, le changement de chemin peut être détecté par l'hôte de liaison et l'écouteur. Ils définiront le paramètre ITrigger.target de la version précédente d'ITrigger sur non défini pour désactiver la liaison précédente, écouter, puis configurer une nouvelle liaison et écouter la nouvelle branche attribuée.

@obs.bindable
class Person {
@obs.property
public Name: string;
@obs
.bind(()=>Person.prototyope.Name.FirstName)
.before(()=>Person.prototype.beforeFirstNameChange)
.after(()=>Person.prototype.FirstNameChanged)
.property
public FirstName: string;
@obs.event
public beforeFirstNameChange = () => {
console.log("before first name is changed.");
}
@obs.event
public FirstNameChanged = () => {
console.log("first name is changed.");
}
}
@obs.bindable
class Name{
@obs.property
public Surname: string;
@obs.property
public FirstName: string;
}

let p = new Person();
p.FirstName = "Jack"; // p.Name.FirstName will change as well.

Réponses:

1 pour la réponse № 1

Il y en a plusieurs. Mon favori actuel: https://github.com/mobxjs/mobx qui supporte transparent programmation réactive.

De nombreuses options non transparentes existent, par exemple n'importe laquelle des variables observables telles que rxjs. Aussi un ancien est knockoutjs mais il est lié à sa propre programmation d’UI.