Emberjs asynchrone Weiterleitung

Mein Problem hängt mit den Problemen zusammen# 1183 und# 1268 von Glut.

Ich habe ein dynamisches Element bei Routen. Alles ist in Ordnung, wenn ich durch die Anwendung navigiere. Das Problem ist, wenn ich eine Seite neu lade oder eine URL eingebe. In diesem Fall gibt die App die Deserialisierungsfunktion ein und lädt und objektiert anhand ihrer ID, aber diese Ladung ist asynchron.

Bei der Ausgabe# 1268 lukemelia sagt"Sie müssen das Ergebnis Ihrer Deserialisierungsmethode das Versprechungsmuster implementieren lassen".

Ich versuche es aber immer im losen Zusammenhang. Mein Code ist ähnlich wie:

page: Ember.Route.extend
route: '/:alias'
deserialize: (router, params) -> page=App.Page.find(params.alias)
$.when( page.get("isLoaded") ).done( () -> console.debug(page.get("alias")) return page)
loading: Em.State.extend

Der Router wechselt in den Ladezustand, kehrt dann aber ohne Kontextdaten zurück. Ich glaube, ich mache etwas falsch. Möglicherweise ist alles falsch.

Kann mir jemand helfen? Gibt es und Beispiel?

Vielen Dank!

Aufgelöst:

page: Ember.Route.extend
    route: '/:id'
    deserialize: (router, params) ->
        page=App.Page.find(params.id})
        deferred = $.Deferred()
        page.addObserver("isLoaded", -> deferred.resolve(page))
        return deferred.promise()
    serialize: (router, page) ->
        return {id: page.get("id") }
    connectOutlets: (router, page) ->
        router.get('applicationController').connectOutlet
            context: page
            name: "page"
loading: Em.State.extend
    connectOutlets: (router, context) ->
        router.get('applicationController').connectOutlet(context: context, name: "loading")

Während die Seite geladen wird, wird der aktive Status geladen. Wenn das Laden der Seite abgeschlossen ist, wird der Seitenstatus des Routers automatisch geladen.

Ich hoffe das kann jemandem helfen

Antworten auf die Frage(1)

Ihre Antwort auf die Frage