Vous devez déclencher manuellement la méthode enhance
d'Aurelia pour enregistrer les attributs personnalisés ou tout ce qui concerne Aurelia. Et vous devez également transmettre un objet ViewResources contenant l'attribut personnalisé.
Puisque ce n'est pas aussi simple que vous pourriez penser, je vais vous expliquer un peu.
Enhance méthode nécessite les paramètres suivants pour ce scénario:
- Votre HTML sous forme de texte (string)
- Le contexte de liaison (dans notre scénario, il est juste
this
)
- Un objet ViewResources qui a l'attribut personnalisé requis
Une façon d'accéder à l'objet ViewResources qui répond à nos exigences est require
l'attribut personnalisé dans votre vue parent, puis utilisez ViewResources
de la vue parent. Pour ce faire, affichez require
dans le code HTML de la vue parente, puis implémentez le rappel created(owningView, thisView)
dans le contrôleur. Lorsqu'il est déclenché, thisView
aura une propriété resources
, qui est un objet ViewResources contenant l'attribut personnalisé require
-d.
Comme je suis HORRIBLE à expliquer, veuillez regarder dans l'exemple ci-dessous.
Voici un exemple comment:
app.js
import { TemplatingEngine } from 'aurelia-framework';
export class App {
static inject = [TemplatingEngine];
message = 'Hello World!';
constructor(templatingEngine, viewResources) {
this._templatingEngine = templatingEngine;
}
created(owningView, thisView) {
this._viewResources = thisView.resources;
}
bind() {
this.createEnhanceAppend();
}
createEnhanceAppend() {
const span = document.createElement('span');
span.innerHTML = "<h5 example.bind=\"message\"></h5>";
this._templatingEngine.enhance({ element: span, bindingContext: this, resources: this._viewResources });
this.view.appendChild(span);
}
}
app.html
<template>
<require from="./example-custom-attribute"></require>
<div ref="view"></div>
</template>
Gist.exécutez:
https://gist.run/?id=7b80d2498ed17bcb88f17b17c6f73fb9
Ressources supplémentaires
Dwayne Charrington a écrit un excellent tutoriel sur ce sujet:
https://ilikekillnerds.com/2016/01/enhancing-at-will-using-aurelias-templating-engine-enhance-api/
merci pour cette ressource, je ne conscient de cela. Cependant, je ne pouvais pas le faire fonctionner avec l'attribut personnalisé. J'ai fourchu votre esprit pour vous montrer l'attribut de travail quand il est sur l'élément et puis il ne fonctionne pas quand je l'ajoute dynamiquement https://gist.run/?id=6216f60bcfc201074d81f6913d59c82c –
donc j'ai découvert que l'exemple fonctionnera si l'attribut est sous 'globalResourses' et non dans la balise' require'. pas sûr (encore) comment le faire fonctionner avec la balise 'require' –
Peut-être que vous auriez à l'ajouter au code source de l'élément? Je sais que vous pouvez fournir une propriété 'viewResources: ViewResources' à la fonction d'amélioration, mais je ne sais pas vraiment comment y inscrire des ressources. – Travo