2017-02-18 3 views
0

Ich versuche, ein Standard-Benutzerstatus-Widget für meine Aurelia App zu erstellen, und ich bin mir nicht sicher, was ich falsch mache. Als Ausgangspunkt habe ich the docs verfolgt, aber meine Ergebnisse sind nicht das, was sie mir erwarten, und ich bekomme weder im Build noch im Browser Fehler.Grundlegende benutzerdefinierte Element scheint nicht zu funktionieren

Relevante Dateien sind wie folgt:

<!-- nav-bar.html --> 
<template bindable='router'> 
    <require from="./user-status "></require> 
    <!-- various nav buttons --> 
    <p class="navbar-collapse collapse navbar-text"> 
     Test <user-status></user-status> 
     </p> 

benutzer status.html

<template> 
    ${status} 
</template> 

benutzer status.js

export default class UserStatusCustomElement { 
     constructor() { 
     this.status = 'Be sure to drink your Ovaltine!'; 
     } 
    } 

wenn ich die in nav-bar.html erfordern ändern aussehen für ./user-status.html scheint es eine Wirkung zu haben (zusätzliche Aurelia-aussehende Attribute sind ad ded an das user-status-Element im gerenderten html), aber die Nachricht wird nicht gerendert (man geht davon aus, dass b/c die Klasse und das Rendern nicht als reine html-Datei abruft). Wenn ich unverändert belasse, tritt kein Fehler auf, aber diese Attribute werden nicht hinzugefügt und es wird nichts gerendert, selbst wenn es sich um statischen Text handelt.

+0

Ist es möglich, dass das Problem wegen des zusätzlichen Speicherplatzes in 'from =" ./ user-status "' auftritt? Vielleicht versuchen Sie es in 'from =" ./ user-status "'? Es mag wie ein wirklich alberner Vorschlag erscheinen, aber ich sah Probleme aufgrund von Leerzeichen im 'repeat-for'-Iterator. –

+0

Ein anderer Vorschlag ist, wenn Sie nur den HTML-Code verwenden möchten, dann den 'status'' bindable' (wie es in 'nav-bar' für' router' gemacht wird), und binden Sie das Attribut von 'nav-bar' . –

+1

Entfernen Sie das Schlüsselwort 'default' von' user-status.js'. –

Antwort

3

Ich spielte mit Ihrem Code und festgestellt, dass das Entfernen von default aus dem user-status.js Modul das Problem behoben. Ich vermute, der Grund hat etwas damit zu tun, wie Aurelia Module-Loader (System.js, webpack, ...) beim Importieren von Modulen verwendet. Leider weiß ich nicht genug über die Interna von Aurelia, um eine tiefere Antwort zu geben.

+1

Danke, ich lese eigentlich ein bisschen mehr über den Import/Export und ich denke, es ist korrekter zu sagen, dass es darum geht, wie Aurelia Viewmodels importiert (unabhängig von Modulladern). Sie möchten das Importieren von Dateien unterstützen, die keinen Standard-Export haben. Um dies zu tun, müssen sie alles importieren und dann annehmen, dass das Viewmodel das erste Exportierte ist. Soweit ich das beurteilen kann, ist dies nicht mit der Standard-Export/Standard-Importsyntax kompatibel. Das heißt, ich werde einen Fehler einreichen, falls jemand, der schlauer ist als ich, es herausfinden kann. :) – Paul

Verwandte Themen