issue with conditional expression {{#if}}
-
hi,
I have issues with conditional expression {{#if }}. On jsreport playground it's work well, but when I download phantom-pdf it conditional is ignored and show every time{{#if conditional_true}}
show div
{{/if}}$scope.Download= function () { var data = {my json} jsreport.serverUrl = 'http://localhost:5488'; var request = { template: { name: 'My_name', engine: 'handlebars', recipe: 'phantom-pdf' }, data: data }; jsreport.download('myReportName.pdf', request); }
-
hi! your problem can be related to not passing the correct data to the jsreport request, so when jsreport evaluates the
if
condition it can't match it to true because maybe there is some field missing in your data, are you sure that you are passing the correct data when rendering from the browser?
-
I used the same json in local jsreport playground and in var request data: { json }, but with different output pdf. I double chekhed all properties in json and they're present when I send it.
How I can verify which json actually arrives in server jsreport?
-
you can write a jsreport script with the following code:
function beforeRender (req, res, done) { console.log(JSON.stringify(req.data)) done() }
and then attach it to your template, after that each data in a request will be logged in console
-
I logged my request and I saw that my json is different. I pass bool but receive a string.
I send json { "property" : true} , but in my template arrived json { "property": "true"}.
I tried to solve called custom function , it't work but it is very inconvenient as I have to call it many times for so many checks.
Can You help me to find another way to convert string to a boolean in jsreportfunction strtobool(conditional, options) {
if(conditional == 'true') {
return options.fn(this);
}
}
-
I logged my request and I saw that my json is different. I pass bool but receive a string.
Yes, that is a problem with url encoded forms. We need to better document it and prefer using
renderAsync
function.
Please look into the docs and try to userenderAsync
-
The link to docs https://jsreport.net/learn/browser-client
-
thanks a lot !!!