2016-05-14 4 views
0

Verwenden eines Parent.of-Resolvers für ein benutzerdefiniertes Bindungsverhalten funktioniert nicht.Aurelia-benutzerdefinierte Bindung mit übergeordnetem Resolver, der keinen korrekten Container injiziert

Der vom Resolver empfangene DI-Container ist der Stammcontainer. Dies verhindert, dass das richtige Elternteil für die Injektion gefunden wird. Die Verwendung eines benutzerdefinierten Attributs mit derselben Parent.of-Dekoration funktioniert wie erwartet.

Ein HTML-Schnipsel:

<form cs-validate-context="login"> 

    <div class="ui two column grid"> 


     <label class="column" t="branchcode"></label> 
     <div class="form-group ui input column"> 
      <input type="text" t="[placeholder]branchcode" value.bind="branchcode & csValid" cs-valid="x"> 
     </div> 

Der cs-validate-Kontext richtig mit Parent.of Resolver in das Attribut injiziert wird, cs-valid, aber nicht die benutzerdefinierten Bindung, csValid .

Wird dies erwartet oder ist es eine Frage von RT * M?

+0

Ich frage mich, ob dies daran liegt, dass eine Bindung eigentlich keiner Komponente "gehört". Beim letzten Debugging eines Problems auf dem i18n-Plugin scheint es, als ob eine Optimierung im Binding-System identische Bindungen zwischenspeichert, dies kann über mehrere Ansichten hinweg geschehen, daher würde ich sagen, dass eine Bindung nichts über ihr Eigentum weiß 'Geltungsbereich' und kann den übergeordneten Container nicht auflösen. – Charleh

+0

Aus Neugier, was macht Ihr benutzerdefiniertes Bindungsverhalten? – Charleh

+1

@Charleh Meine benutzerdefinierte Bindung hat den Validierungskontext injiziert. Die Bindung sollte sich dann im Kontext registrieren. So kann ich das gleiche Widget in einem anderen Kontext wiederverwenden, indem ich verschiedene Validierungen ohne Änderungen verwende. Ich habe dies mit benutzerdefinierten Elementen arbeiten, die viel einfacher zu arbeiten ist. Auf diese Weise kennt mein Controller keine Validierungen. –

Antwort

1

Ein Aurelia-Attribut erhalten die richtigen Eltern injiziert.

Also habe ich es anstelle der Aurelia-Bindung verwendet.