2017-11-25 3 views
1

Ich bin neu zu Ember und ich versuche TransitionTo mit QueryParams zu verwenden, aber ich kann es nicht zur Arbeit bringen Ich habe eine Menge der Lösung versucht, aber ich kann nicht herausfinden, was ist falsch mit meinem Code. Hier ist der Code für die beiden Strecken Ich bin zwischen den Übergang:Ember TransitionTo mit QueryParams funktioniert nicht

1- index.js:

export default Ember.Route.extend({ 
setupController: function(controller, model) { 
this._super(controller, model); 
controller.set("model", model); 
}, 
model() { 
    return { 
    searchQuery: "" 
    }; 
}, 
actions: { 
    search() { 
    const query = this.controller.get("model.searchQuery"); 
    this.transitionTo("/search-results", { 
    quaryParams: { 
     q: query 
    } 
    }); 
    } 
} 
}); 

2-search-results.js:

export default Ember.Route.extend({ 
model() { 
    return { 
    fieldsInput: [] 
    }; 
}, 
setupController: function(controller, model) { 
    this._super(controller, model); 
    controller.set("model", model); 
} 
}); 

ich nicht wissen, ob noch etwas hinzugefügt werden sollte. Ich habe versucht, queryParams auf dem Controller zu setzen, aber es hat auch nicht funktioniert. auch, ich habe versucht,

zu den Suchergebnissen Route, aber keine Verwendung.

Antwort

1

Wenn Sie URL für die Methode transitionTo angeben, müssen Sie die vollständige URL angeben, indem Sie queryParams erstellen. Dies wird

this.transitionTo(`/search-results?q=${query}`); 

arbeiten, wie Sie in Kommentar erwähnt, Sie queryParams Eigenschaft in Route angeben fehlten.

+0

danke für die Antwort. aber ich habe es versucht und es hat auch nicht funktioniert. es geht nur auf die Route ohne die Abfrage params – moamenezzat

+1

Es kann viele Gründe dafür geben, nicht zu arbeiten. aber ich erwähnte einen kritischen Teil meiner Antwort. das stimmt und es wird funktionieren. Schau dir das an [twiddle] (https://ember-twiddle.com/4b358521437ddbf62be17af55e7b27ce?openFiles=routes.application.js%2C&route=%2Fsearch-results%3Fq%3DchangedValue). wenn Sie sich vorbereiten, nicht zu arbeiten, dann ist es leicht zu lösen – kumkanillam

+0

danke :). das Gerede gab mir das fehlende Stück. Es wurde das queryParms-Objekt auf der Route hinzugefügt. Bitte füge deine Antwort hinzu, um sie als die richtige zu markieren. – moamenezzat

0

In "search-results.js" müssen Sie (über Ihr Modell) auf den Parameter zugreifen, den Sie von index.js an die Datei übergeben haben. In search-results.js sollte Ihr Modell also ein wenig aussehen dies:

model(param) { 
    return { 
    fieldsInput: [] 
    }; 
}, 

wenn Sie schauen, wo Sie „fieldsInput“ oben definiert haben, Sie gehen eine Art von Ember-Data Lookup tun wollen (, wenn Sie nicht mit ihm vertraut sind, dann sehen ein youtube Video oder zwei, es wird eine Menge vorwärts helfen), um den "queryParam" zu verwenden, den Sie von index.js übergaben.

(Hinweis: „return this.store.findRecord(someObject, param.someProperty)“ wahrscheinlich ist, was Sie verwenden werden wollen)

Auch, wenn Sie in der Zeile sehen nur unter dem Sie „this.transitionTo“ geschrieben haben, haben Sie einen Tippfehler in Ihrem Rechtschreibung von "queryParams".

Hoffe, das hilft.

+0

Vielen Dank für die Antwort. aber @kumkanillam twiddle gab mir das fehlende Stück. – moamenezzat

Verwandte Themen