2017-02-14 8 views
0

I Winkel js und Freemarker bin mit zusammen, in der Vorlage schrieb ich einen <a> Tag, deren href attr beginnt mit einem # so kann ich Route Config in Winkeln wie:Flucht # {{}} in Freemarker Vorlage

<a href="#/edit/user"> 

aber wenn die Vorlage mit AngularJS schablone schreiben, es scheint, dass es einige Konflikte (mit Freemarker Syntax und AngularJS Template Syntax zusammen) ist:

<li ng-repeat="tab in tabs"> 
    <a href="#{{tab.url}}"> {{tab.title}} </a> 
</li> 

wenn ich schrieb wie über der Freemarker-Vorlage mit analysieren fehl Diese Ausnahme:

freemarker.core.ParseException: Parsing error in template "mis/newindex.ftl" in line 21, column 80: 
Encountered "}", but was expecting one of: 
    "," 
    ":" 
    "." 
    "[" 
    "(" 
    "?" 
    "!" 
    <TERMINATING_EXCLAM> 
    "??" 
    "+" 
    "-" 
    "*" 
    "/" 
    "%" 
    "!=" 
    "=" 
    "==" 
    ">=" 
    <ESCAPED_GTE> 
    ">" 
    <ESCAPED_GT> 
    <LESS_THAN_EQUALS> 
    <LESS_THAN> 
    ".." 
    <AND> 
    <OR> 

Ich weiß #{{tab.url}} das man das Problem verursachen sollte, aber wie könnte ich dieses Problem umgehen?


Ich habe vorbei dies durch ein Verfahren, in dem Winkel Controller fügen Sie die URL erstellen mit dem Präfix #

function completeUrl(url){ 
    return '#' + url; 
} 

<a href={{completeUrl(tab.url)}}> {{tab.title}} </a> 

aber immer noch, ich möchte eine elegantere Lösung zu finden.

+0

@bipinpatel Dank für die Antwort, aber ich weiß nicht, wie ein plunkr mit 'freemarker' zu schaffen, und es ist eher wie eine Freemarker Ausgabe – armnotstrong

+0

@bipinpatel http://pastebin.com/tVU9SEQE – armnotstrong

Antwort

2

Das ist ein unglücklicher Zusammenstoß mit Freemarker des #{}, die selbst ist veraltet und wird nur aus Gründen der Abwärtskompatibilität erkannt, aber der Parser ist nicht konfigurierbar, es zu ignorieren:

Der Code sollte wie sein. Die kürzeste (wenn auch hässliche) Lösung, die ich mir vorstellen kann, ist ${'#'}{{}}.

0

Wenn Ihr Problem mit href Wert ist, können Sie dieses Problem mit der ngHref Richtlinie beheben.

<li ng-repeat="tab in tabs"> 
    <a ng-href="#/{{tab.url}}"> {{tab.title}} </a> 
</li> 
+0

Dank für die Antwort, aber ich habe bereits ein Präfix '/' in 'tab.url', damit das das Problem nicht löst :-( – armnotstrong

+0

Dann kannst du es einfach als' # {{tab.url}} 'versuchen. – SaiUnique

+0

Ich habe es versucht, da freemarker template vor angularJs template geparst wird, hat es kein glück bekommen, danke – armnotstrong