2016-05-09 4 views
0

Ich benutze jsrender, um die Vorlagen im Raster abzubilden. Ich rufe eine Methode innerhalb jsrender, wenn die Bedingung wie unten,Fehler: view.hlp (...) ist keine Funktion in jsrender

@section scripts{ 
    $.views.helpers({ 
     isMobile: function() { 
      return ("@IsMobileDevice" == "False" && (window.innerWidth < 1200)); 
     } 
    }); 
} 
<script type="text/x-jsrender"> 
    {{if ~isMobile()}} 
     <li class="show">Show</li> 
    {{/if}} 
</script> 

Aber ich erhalte eine Fehlermeldung:

view.hlp(...) is not a function.

Was ist hier falsch?

Antwort

1

Es ist schwierig zu helfen, wenn Sie Razor-Code posten. Sie müssen den Code anzeigen, der in den Browser geladen wird, nicht den Servercode, da sich Ihre Frage auf den clientseitigen JsRender bezieht.

Es scheint, dass der isMobile Helfer keine Funktion ist. Möglicherweise wird der Code für die Hilfsdefinition nicht im Browser geladen, bevor der Rendercode für die Vorlage ausgeführt wird - oder es liegt ein Fehler im Servercode vor, so dass der isMobile Helfer im Browser registriert ist, aber keine Funktion ist.

1

Ich habe das ähnliche Problem konfrontiert und falsch in meiner Hilfsmethode ist, dass ich meine Hilfsmethode aufgerufen habe, bevor es Initialisierung ist. siehe unten Beispiel

Falscher Code

<script type="text/x-jsrender"> 
{{if ~isMobile()}} 
    <li class="show">Show</li> 
{{/if}} 

$.views.helpers({ 
    isMobile: function() { 
     return ("@IsMobileDevice" == "False" && (window.innerWidth < 1200)); 
    } 
}); 
</script> 

Rechts-Code

<script type="text/x-jsrender"> 
$.views.helpers({ 
    isMobile: function() { 
     return ("@IsMobileDevice" == "False" && (window.innerWidth < 1200)); 
    } 
}); 
{{if ~isMobile()}} 
    <li class="show">Show</li> 
{{/if}} 
</script> 

hoffen, dass dies hilfreich sein

Verwandte Themen