2016-12-06 4 views
0

Kann ich einen Helfer in Lenker schreiben, der erkennen kann, ob ein String ein Teilstring eines anderen Strings ist?Substring-Helfer im Lenker

Ich schrieb den folgenden Code, aber es scheint nicht

zu funktionieren

Dies ist der Helfer:

'if_sub': function(a, b, opts) { 
    if (a.includes(b)) 
     return opts.fn(this); 
    else 
     return opts.inverse(this); 
} 

Und das ist die Umsetzung:

{{#if_sub colvalues "success"}} 
    <td class="log-success"> {{colvalues}} </td> 
{{/if_sub}} 
+0

sein, was 'colvalues'? ist es Zeichenfolge? – Mahi

+0

@Mahi ja. Es ist eine Variable, die eine Zeichenfolge enthält. Zum Beispiel - "Fehler: txn1". –

+0

Wenn also die Variable 'colvalues'' succ' hat, sollte sie 'opts.fn (this);' else' opts.inverse (this); '?? – Mahi

Antwort

1

nur wenig Fehler. if (a.includes(b)) sollte if (b.includes(a))

<!DOCTYPE HTML> 
 
<html> 
 
<head> 
 
    <meta charset="utf-8"> 
 
    <title>How to render html with Handlebars.js</title> 
 
    <script src="https://cdn.jsdelivr.net/handlebarsjs/4.0.3/handlebars.min.js"></script> 
 
    <script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script> 
 
    
 
    <script id="simple-template" type="text/x-handlebars-template"> 
 

 
     {{#if_sub colvalues "success"}} 
 
    <td class="log-success"> {{colvalues}} </td> 
 
     {{/if_sub}} 
 
    </script> 
 
    
 
    <script type="text/javascript"> 
 
     Handlebars.registerHelper("if_sub",function(a, b, opts) { 
 

 
    if (b.includes(a)){ 
 
     return opts.fn(this); 
 
    } 
 
      
 
    else{ 
 
     return opts.inverse(this); 
 
    } 
 
      
 
}); 
 
    
 
    //wait for page to load 
 
    $(document).ready(function(){ 
 
     var raw_template = $('#simple-template').html(); 
 
     var template = Handlebars.compile(raw_template); 
 
     var data = {colvalues:"suc"}; //change value and see. 
 
     var html = template(data); 
 
     $('#main').append(html); 
 

 
    }); 
 
    </script> 
 
</head> 
 
    
 
<body> 
 
<!-- Insertion point for handlebars template --> 
 
<div id="main" style="margin-left:100px"> 
 
</div> 
 
</body> 
 
</html>

+0

Ich erhalte diesen Fehler. "Object success hat keine Methode 'includes'" –

+0

funktioniert das Snippet oder nicht? – Mahi

+0

Ja. Das Snippet scheint zu funktionieren. –