2017-11-04 4 views
0

ich einfache Anwendung mit Express- und Lenkerrufenden Funktionsprototyp in Lenker

in meinen Modellen gebaut, habe ich Funktionsprototyp wie diese

// myModel.js 
Student.prototype.getFullname = function() { 
    return `${this.first_name} ${this.last_name}`; 
} 

in meinem Router, ich kann so

den Funktionsprototyp aufrufe
// myRouter.js 
const rows = await Model.Student.findAll(); 
console.log(rows[0].getFullname()); // I can invoke function prototype here 
res.render('mypage', rows); // with express, render it to hbs 

meine Frage: wie Funktionsprototyp im Lenker zu nennen?

{{#each this}} 
<tr> 
    <td>{{ id }}</td> 
    <td>{{ first_name }}</td> 
    <td>{{ last_name }}</td> 
    <td>{{ rows[0].getFullname() }}</td> // I wanna call it here 
</tr> 
{{/each}} 
+0

, warum Sie nicht machen 'full_name' Getter? 'Object.defineProperty (Student.prototype," full_name ", {get() {return this.first_name +" "+ this.last_name}})' oder 'class Student {get full_name() {return ...}}' – Thomas

+0

Es ist die Voraussetzung, die ich in meinem Bootcamp habe. Ich mache hier Aufgabe –

+0

Dann könnten Sie einen Helfer registrieren, der Ihnen hilft, diese Methode aufzurufen. – Thomas

Antwort

1

In handlebars helpers docs, gibt es buchstäblich Ihr Beispiel mit dem fullName Helfer.

Registrierung Helfer:

Handlebars.registerHelper('getFullName', function(student) { 

    return `${student.first_name} ${student.last_name}`; 

}); 

Mit Helfer:

{{#each this}} 
    <tr> 
     <td>{{ id }}</td> 
     <td>{{ first_name }}</td> 
     <td>{{ last_name }}</td> 
     <td>{{ getFullName this }}</td> 
    </tr> 
{{/each}}