2016-04-03 4 views
1

Ich möchte einen Wert in meinem app.js Ansicht-Modell zu einem benutzerdefinierten Element binden, aber ich kann nicht scheinen, bind zu arbeiten richtig zu erhalten, wenn der Wert von images von einem Versprechen gesetzt.Wie binden Sie das Ansichtsmodell der App mithilfe eines Versprechens an ein benutzerdefiniertes Element?

app.js:

@inject(Api) 
export class App { 
    constructor(api) { 
     this.api = api; 
    } 

    . . . 

    activate() { 
     this.api.mockGet('gallery').then((images) => this.images = images); 
    } 
} 

Mein individuelles Element, wie in app.html verwiesen:

<featured-image images.bind="images"></featured-image> 

Mein Ansicht-Modell individuelles Elements, featured-image.js:

import {containerless, bindable} from 'aurelia-framework'; 

@containerless 
export class FeaturedImage { 
    @bindable images = null; 

    attached() { 
     console.log(this.images); 
    } 
} 

this.images ist immer undefined. Wenn ich images auf ein fest codiertes Array setze, funktioniert es wie erwartet. Was mache ich falsch?

Antwort

3

Versuchen Sie, das Versprechen in der activate zurückzukehren:

activate() { 
    return this.api.mockGet('gallery') 
     .then((images) => this.images = images); 
} 

Dies stellt sicher, dass Ihre Ansicht wird aktiviert, wenn das Versprechen abgeschlossen ist. Ich denke jedoch, dass es auch ohne return funktionieren sollte, da alle Änderungen im Array auf alle Ansichten übertragen werden, die es binden. Vielleicht verursacht eine andere Sache das Problem.

+1

Sehr interessant. Das funktioniert, aber ich würde gerne verstehen warum. Gibt es eine Referenz in den Dokumenten? – Brandon

+0

Ja, da ist. http://aurelia.io/docs.html#/aurelia/framework/1.0.0-beta.1.4/doc/article/cheat-sheet/7 "Implementieren Sie diesen Hook, wenn Sie kurz vor dem Start eine benutzerdefinierte Logik ausführen möchten view-model wird angezeigt. Sie können optional eine Zusage zurückgeben, um den Router anzuweisen, zu warten, bis die Ansicht gebunden und angehängt wurde, bis Sie Ihre Arbeit beendet haben. " –

+0

Derp - vielen Dank für die Hilfe! Ich schätze es. – Brandon

Verwandte Themen