Mops Aufruf der js-Funktion aus einer anderen Datei im template
Kann ich nicht lösen dies für fast vier Stunden, und ich finde keine hilfreiche Dokumentation für diese Art von Problemen. Das ist das Problem, ich bin mit Mops/jade-Vorlagen und ich wollen call-Funktion in Mops-Vorlage verwandeln Sie einige Daten
Dies ist die wichtigste Vorlage:
/** main template */
section
each pet in pets
.pet
.photo-column
img(src= pet.photo)
.info-column
h2= pet.name
span.species= (pet.species)
p Age: #{calculateAge(pet.birthYear)} //here I need to call calculateAge function
if pet.favFoods
h4.headline-bar Favorite Foods
ul.favorite-foods
each favFood in pet.favFoods
li!= favFood
/** end main template **/
Dies ist die äußere Funktion:
/** calculateAge.js **/
module.exports = function(birthYear) {
var age = new Date().getFullYear() - birthYear;
if (age > 0) {
return age + " years old";
} else {
return "Less than a year old";
}
};
/** end calculateAge.js **/
Was muss ich tun, damit dies geschieht?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Möglicherweise gibt es eine bessere Art das zu handhaben, aber ich in der Regel tun Sie es durch den Import der externen-Modul und dann übergeben Sie es als Teil der template-context-Objekt. Das bedeutet, dass der code, das macht die Vorlage sollte so etwas wie:
Nun, Sie können auf
calculateAge
in Ihrer Vorlage. Wenn dieses Modul verwendet eine Menge in der die meisten Vorlagen, dann Sie sollte es passieren, als Teil vonres.locals
oderapp.locals
so dass es verfügbar ist für alle Vorlagen, ohne die Notwendigkeit zu fügen es für jeden Pfad Wunsch.Wie in rohem HTML, wenn Sie wollen JS ausführen in einem sepcific Teil benötigen Sie einen script-tag zu umschließen, die js, die Sie verwenden möchten.
In MOPS-Optionen verwenden
locals
- Eigenschaft, um die import-Funktionen, die Sie verwenden möchten, in Ihrem Vorlagen.Dann können Sie es in alle Ihre Vorlagen wie folgt aus (bitte beachten Sie die zusätzlichen unescaping tag
!{}
):Können Sie javascript schreiben mit .Skript tag