Accessing data from template
This page summarizes all the concepts needed to access data from a template
Main
Mandarine's engine allows you to interact and make your templates access data located in your application's back-end. For this, your HTTP Handler decorated with @Render
must return an object. This object will then be accessible from the template & it is meant to have the information you would like to interact with.
The @Model decorator
The @Model
decorator provides a data modeler for your template in a programatic way. It is a HTTP Parameter Decorator, which means, it is used & injected in the parameters of an HTTP handler.
@Model
working as your data modeler for your template makes your code easier to interact with & more readable. Although, it does not have any important functionality more than serving as a helper for your template's data.
When using ViewModel (object injected from @Model
), your method instead of returning an object, must return this class as Mandarine will resolve the attributes added to the modeler at request time.
Syntax:
@Model()
Usage
Example
./src/main/resources/templates/my-template.html
<h2>Hello <%= data.name %> <%= data.lastname %></h2>
<small>Your current address is: <%= data.address.city %>, <%= data.address.state %>, <%= data.address.country %>. </small>
import { Controller, GET, Render, Model, ViewModel, MandarineCore } from "https://deno.land/x/mandarinets/mod.ts";
@Controller()
export class MyController {
@GET('/path-template')
@Render('my-template.html')
public httpHandler(@Model() model: ViewModel) {
model.setAttribute("data", {
name: "Andres",
lastname: "Pirela",
address: {
city: "New york",
state: "NY",
country: "United States"
}
});
// returning ViewModel object.
return model;
}
@GET('/manual-template')
@Render(`<h2><%= name %></h2>`, { manual: true })
public httpHandler2() {
return {
name: "Andres"
};
}
}
new MandarineCore().MVC().run();
Last updated
Was this helpful?