doudui1850 2017-09-02 21:01
浏览 42
已采纳

使用Golang模板解析器的Framework7代码冲突[重复]

This question already has an answer here:

Code-Syntax Collision

Golang or Iris-go uses {{ .VariableName }} to interpret the variable name or they use {{ }} for parsing other function and code too. Now, when I tried framework7 code below in people.html page

{{#each people}}
    <li>{{this}}</li>
{{/each}}

I got the error about.html:26: unexpected "#" in command

Expected Behavior

I was expecting the JS code for framework to be executed

Actual Behavior

I got the error about.html:26: unexpected "#" in command as Golang is trying to parse the template code inside {{ }}

How can i ask Golang not to parse anything inside that particular syntax and live it for javascript to handle it.

</div>
  • 写回答

1条回答 默认 最新

  • doukong6031 2017-09-02 21:27
    关注

    You may use the Template.Delims() method to change the delimeters used by the Go template engine. If you change this, it won't collide with the delims used by framework7.

    Example changing Go template delims to [[ and ]]:

    func main() {
        t := template.Must(template.New("").Delims("[[", "]]").Parse(tmpl))
        if err := t.Execute(os.Stdout, "test"); err != nil {
            panic(nil)
        }
    }
    
    const tmpl = `[[.]]
    {{#each people}}
        <li>{{this}}</li>
    {{/each}}`
    

    Output (try it on the Go Playground)

    test
    {{#each people}}
        <li>{{this}}</li>
    {{/each}}
    

    If this is inconvenient for you, or you just want some specific actions be left "unprocessed" by the Go template engine, you may also choose to "escape" these specific parts in the Go template, by transforming them into actions which simply output the similar actions for framework7. For example to output {{#each people}}, in the Go template use:

    {{"{{#each people}}"}}
    

    A working example:

    func main() {
        t := template.Must(template.New("").Parse(tmpl))
        if err := t.Execute(os.Stdout, "test"); err != nil {
            panic(nil)
        }
    }
    
    const tmpl = `{{.}}
    {{"{{#each people}}"}}
        <li>{{"{{this}}"}}</li>
    {{"{{/each}}"}}`
    

    Output (try it on the Go Playground):

    test
    {{#each people}}
        <li>{{this}}</li>
    {{/each}}
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 unity第一人称射击小游戏,有demo,在原脚本的基础上进行修改以达到要求
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染