Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

doT.js: chained if-else if in dot.js

I was trying doT.js template engine.How to do nested if-else if in dot.js like

if()
 .....
else if
 .....
else if
 .....
else
 .....
like image 220
Manish Kumar Avatar asked Feb 14 '14 16:02

Manish Kumar


People also ask

Can I use two if statements in JavaScript?

The if and if-else statements can be nested, meaning they can be used inside another if or else statement.

What is question mark dot in JS?

The ?. operator is like the . chaining operator, except that instead of causing an error if a reference is nullish ( null or undefined ), the expression short-circuits with a return value of undefined . When used with function calls, it returns undefined if the given function does not exist.


2 Answers

You can use the following syntax:

{{? it.name }}
<div>Oh, I love your name, {{=it.name}}!</div>
{{?? it.age === 0}}
<div>Guess nobody named you yet!</div>
{{?? it.age > 20}}
<div>You're old!</div>
{{??}}
You are {{=it.age}} and still don't have a name?
{{?}}

The above gets compiled to:

function anonymous(it /**/) 
{ 
    var out='';

    if(it.name)
    {
        out+='<div>Oh, I love your name, '+(it.name)+'!</div>';
    }
    else if(it.age === 0)
    {
        out+='<div>Guess nobody named you yet!</div>';
    }
    else if(it.age > 20)
    {
        out+='<div>You\'re old!</div>';
    }
    else
    {
        out+='You are '+(it.age)+' and still don\'t have a name?';
    }
    return out; 
}

Essentially, just keep adding {{?? condition}} until you get to {{?}} (the end of the block).

like image 120
BenM Avatar answered Oct 02 '22 21:10

BenM


You can do it like this:

<!-- CONDITIONAL !-->
<!-- if -->
<div>
    {{? it[0].firstName }}
    {{=it[0].firstName }}
    {{?}}
</div>

<!-- if / else if / else -->
<div>
    <!-- if -->
    {{? it[0].lastName }}
    <span>First name is set</span>

    <!-- else if -->
    {{?? it[0].zip}}
    <span>You don't have a last name</span>

    <!-- else if -->
    {{?? it[0].firstName}}
    <span>Your firstName is: {{=it[0].firstName}}</span>

    <!-- else if end -->
    {{??}}
                         
    <!-- else -->
    <span>You didn't set your name</span>
                         
    <!-- if end -->
    {{?}}
</div>
like image 39
Agnaldo Junior Avatar answered Oct 02 '22 20:10

Agnaldo Junior