2016-04-10 3 views
0

In meinem Ember app, ich habe eine gemeinsame mixin/code, die einen Übergang AnrufEmber Hinzufügen Prüfung für den Übergang Anrufkontext (route/Controller)

myCommonFn: function() { 
//this.transition('someRoute') // Works if context is route 
//this.transitionTo('someRoute') // Works if context is controller 
} 

Jetzt hat da diese Funktion über mehrere Routen gemeinsam ist, es kann entweder von einem Controller oder Route ausgelöst werden

Meine Frage ist, wie kann ich sicherstellen, dass dies in beiden Fällen funktioniert? Bedeutung sollte ich einen Scheck hinzufügen, mit

this.constuctor() //Check if it is controller or route 

OR sollte ich tun, um eine Null/undefined Scheck für

this.transition() OR this.transitionToRoute() 

Was ist die beste Art und Weise ist es in allen Fällen funktioniert?

Antwort

0

Wenn Ihr Mixin überall angewendet wird, ist es am einfachsten zu prüfen und zu feuern. Wenn Sie Pläne für ein Upgrade haben, gehen die Controller schließlich weg, so dass dies möglicherweise nur eine vorübergehende Lösung ist.

var transition = this.transitionTo || this.transitionToRoute; 

transition.apply(this, [arg1, arg2,.....]);; 

Sie können auch Ihre gemeinsame mixin zwei weitere Male erweitern und eine Basisversion, einen Controller-Version und eine Route Version, wo Sie Route/Controller spezifische Funktionalität geben können.

+0

Thx. Wird nach this.constructor() nicht empfohlen? – testndtv

+0

es ist ein vollkommen praktikabler Weg, es zu tun, es kann einfach nicht notwendig sein. Außerdem müssen Sie möglicherweise sicherstellen, dass der Übergang nicht null ist, wenn Sie das Mixen eines Tages auf eine Komponente anwenden – Kingpin2k

Verwandte Themen