2016-09-02 3 views

Antwort

0

Sie können dies tun:

<div id="dummy">lorum ipsum</div> 
<button click.delegate="addAttribute()">click here</button> 

mit Code hinter

public addAttribute() { 

    let el = document.getElementById("dummy"); 
    el.setAttribute("css.bind", "{ color: 'red' }"); 

    if (el && !el.querySelectorAll('.au-target').length) { 
     var element = this.templatingEngine.enhance(el); 
     console.dir(element.viewFactory); 
    } 
} 

Sie wissen nicht, wie dies zu lösen, und es wird (ich glaube) geben entweder Gedächtnisprobleme oder Fehler, wenn Sie anhängen ein Element mehrmals (also eine Überprüfung für .au-target hinzugefügt). Die Dokumentation über der Funktion besagt, dass Sie jetzt für den Lebenszyklus verantwortlich sind.

Was versuchen Sie zu erreichen? Es könnte einen besseren Weg geben.

+0

Fast, ich versuche, ein custom-Attribut zu aktivieren und die Erweiterung-Methode wird keine Lebenszyklus-Methoden des Attributs aufrufen. Es scheint so, als würde nur das Attribut zum DOM hinzugefügt, aber nicht die Aurelia-Templating-Bits durchlaufen. – Mike

+0

Hmm, es ist nicht meine erste Wahl, aber Sie könnten "aurelia-testing" einschließen und es den vollen html für Sie rendern lassen und dann ersetzen, aber dann würde es nicht mehr auf Änderungen aktualisieren, die ich denke, aber wird durch bind/laufen anhängen/etc. Fühlt sich an wie ein hässlicher Hack :-) Oder prüfe den Code von aurelia-testing, ob du etwas von dort finden kannst, um es zum Laufen zu bringen :-) –

+0

Gute Tipps, ich ging durch die src für Aurelia-Tests und sie wickeln wirklich die Life-Cycle-up und injiziert die Attribut-Ressourcen. Viel zu komplex für eine "einfache Sache" als Hinzufügen eines Attributs und ich kann zustimmen, dass es sich ein bisschen hacky anfühlt. :-) – Mike

Verwandte Themen