I'm familiar with using a function to determine a specific condition using xtemplate but not sure how to directly call a function without the conditional if statement.
My code, for example, wants to append some characters to a string that I am using within my xtemplate. I think the best way to do it is append the characters when the xtemplate is rendered.
var myTpl = new Ext.XTemplate(
'<tpl for=".">',
'<tpl if="this.isThumbnailed(thumbnailed) == true">',
'<img src=this.getThumbUrl(rawThumbUrl)/>', //this call to function does not work, also tried variations of this.
'</tpl>',
'</tpl>',
{
isThumbnailed : function(thumbnailed) {
return ...;
},
getThumbUrl : function(rawThumbUrl) {
//... //this function does not get called.
return ...;
}
}
)
Have a look at the XTemplate constructor API docs. There are lots of good examples there. Quoting:
Anything between {[ ... ]} is considered code to be executed in the scope of the template.
So you should be able to do something like:
'<img src={[this.getThumbUrl(rawThumbUrl)]} />',
To call functions defined in the scope, you need to use the syntax:
{[this.functionName(values.valueName)]}
In your case, you can call:
'<img src="{[this.getThumbUrl(values.rawThumbUrl)]}"/>',
If you want to use a function defined outside of the template context, then remove this.
from the function call.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With