2016-07-25 13 views
1

Es ist möglich, Attribute Aurelia individuellen Element passiert mit @bindable decorator:Warum bindbare decorator nicht eingehalten wird, wenn ein benutzerdefiniertes Element übertragen mit compose

export class ItemCustomElement { 
    @bindable model: Item; 
} 

<item model.bind="model"></item> 

Warum durch <compose> gerenderte benutzerdefinierte Elemente unterschiedlich behandelt werden, entsprechend docs Sie benötigen eine activate Methode, um Daten zu übergeben? @bindable wird nicht respektiert.

export class ItemCustomElement { 
    @bindable model: Item; 

    activate(model: Item): void { 
     this.model = model; 
    } 
} 

<compose view-model="./item" model.bind="model"></compose> 

Aus der Sicht der benutzerdefinierten Elements, derzeit muss es wissen, wie es verwendet wird, mit <compose> oder nicht werden wird. Ich denke, ein benutzerdefiniertes Element sollte von dieser externen Entscheidung isoliert werden. Können wir in beiden Fällen @bindable arbeiten lassen?

Antwort

0

Gewohnheit gemacht Elemente von <compose> haben Zugriff auf ihre äußeren Bereiche. Daher müssen Sie @bindable nicht verwenden. Sehen Sie dieses Beispiel https://gist.run/?id=fae6b9c9c2e3a608a60522392329bae1

+0

In Ihrem Beispiel, wie Sie someMessage Eigenschaft innerhalb MyElement Klasse zugreifen? – zakjan

+0

konnte ich zugreifen, weil es mit '' importiert wurde. Wenn Sie compose verwenden, kann das Element direkt auf die Eigenschaften des übergeordneten Elements zugreifen. –

+0

Ja, in der Ansicht HTML-Vorlage. Ich frage nach der View-Model JS-Datei. – zakjan