2017-03-28 6 views
1

Ich bin ziemlich neu zu ember. Ich habe eine existierende Ember-App und muss eine Funktionalität implementieren. Ich habe ein Ember-Objekt als untenÜbergang zu Route Aktion von Ember Objekt

`import Ember from 'ember'` 

CallService = Ember.Object.extend 

... other code here 

_updateConnectedLeadId: (-> 
    console.log "Do i get here??" 

    **pass the route action here** 

).observes('some_other_here') 
`export default CallService` 

Leider konnte ich den ganzen Code hier nicht setzen.

Meine Route sieht aus wie

ApplicationRoute = Ember.Route.extend 
    actions: 
    showLead: -> 
     console.log data 
     console.log "did i get here?" 
     @transitionTo('dashboard') 

`export default ApplicationRoute` 

ich mit @send('showLead') versucht, @sendAction('showLead') in meiner Methode aber kein Glück.

Meine Hauptabsicht ist es, einen Übergang zu machen, sobald die console.log "Do i get here??" angezeigt wird. Ich bin mir nicht sicher, ob ich hier richtig bin.

Ich habe auch versucht mit @transitionTo('dashboard') und @transitionToRote('dashboard') direkt, aber es wirft mir Fehler.

Ich habe für einen Tag auf diesem jetzt fest und ich bin ahnungslos.

Ich werde für jede Anleitung und Hilfe dankbar sein. Danke

+0

vielleicht können Sie Ihren Code hier hochladen, https://ember-twiddle.com/ – winter

+0

@amaia, ich glaube wirklich nicht, dass das notwendig sein wird. Ich habe den wichtigen Code zur Verfügung gestellt, der relevant ist. Ich werde auf jede Antwort warten und nach mehr fragen. Danke für den Link. – Aakanksha

Antwort

1

Sie haben das Problem, dass Sie versuchen, eine Route Aktion auszulösen oder einen Übergang aus einem Ember.Object, genannt Anruf-Service auslösen. Der Code, den Sie erstellen, ist unklar, wo Ihr benutzerdefiniertes Objekt erstellt wird. wo der Beobachter aufgrund einer Änderung an der Objekteigenschaftenaktualisierung ausgelöst wird, und so weiter.

Trotzdem habe ich versucht, eine funktionierende example für Sie bereitzustellen. Wenn Sie die Twiddle öffnen, werden Sie sehen, dass ich eine my-object Instanz innerhalb index.js Route erstellt und übergeben Sie es als model zu my-component. Wenn Sie auf die Schaltfläche innerhalb von my-component.hbs klicken. Die my-object Instanzen dummyVariable wird umgeschaltet und der Beobachter innerhalb my-object führt. Der schwierige Teil hier ist, dass ich index Route selbst als ownerRoute Eigenschaft an my-object Instanz übergeben; so dass ich die Aktion auslösen ausführt verwandte dass

ownerRoute.send('dummyAction'); 

so

innerhalb my-object.js mit index Route von dummyAction und Übergang zu my-route durchgeführt wird. Obwohl ich glaube, dass dies Ihre Frage lösen könnte; Ich bin nicht ganz glücklich über das Design. Ich glaube nicht, dass es für Ember.Objects ein guter Weg ist, über Routen, Aktionen, Controller usw. Bescheid zu wissen. Ich glaube, der richtige Weg besteht darin, die relevanten Eigenschaften eines Objekts innerhalb dieser Konstrukte zu beobachten und notwendige Aktionen selbst durchzuführen. Darüber hinaus könnten Sie in Erwägung ziehen, ein service anstelle eines Objekts zu erstellen und den Dienst direkt in Ihre Route einzufügen, anstatt eine Instanz Ihrer Klasse zu erstellen, die Ember.Object erweitert. Wenn Sie von Ember.Object erweitern müssen, können Sie relevante Route, Controller usw. zu den Instanzen dieser bestimmten Objektklasse hinzufügen, indem Sie eine instance-initializer verwenden, wenn Sie benötigen.

Wie auch immer, bitte werfen Sie einen Blick auf die Twiddle und fragen Sie mehr, wenn Sie müssen. Ich werde glücklich sein zu helfen, wenn ich kann.

+0

Danke, dass du dir Zeit genommen hast, eine funktionierende Demo zu erstellen.Ich bin mir über die Standards nicht sehr bewusst, aber ich denke, ich stimme dir zu "Ich glaube nicht, dass es ein guter Weg für Ember ist, über Routen, Aktionen, Controller usw. Bescheid zu wissen." Würdest du bitte deinen Punkt erklären "Ich glaube, der richtige Weg ist das Beobachten der relevanten Eigenschaften des Objekts aus diesen Konstrukten heraus und die Durchführung der notwendigen Aktionen. Außerdem könntest du einen Dienst anstelle eines Objekts erstellen und den Dienst direkt in deinen Dienst einfügen Route statt eine Instanz Ihrer Klasse zu erweitern Ember.Object " – Aakanksha

+0

@Aakanksha Ich werde es mehr erklären, wenn ich mehr Zeit sicher habe. – alptugd

+0

Ich schätze es. Danke – Aakanksha

Verwandte Themen