使用小胡子填写html标记参数

don*_*nut 3 jquery templates mustache

我正在尝试使用小胡子向下面的href附加一个标识符(id)

模板:

<div id='tmpl'>
    <a href='#product_detail?'{{id}}>link</a>
</div>    

var template = $('#tmpl').html();
Run Code Online (Sandbox Code Playgroud)

数据:

var model = { id: 22 };
Run Code Online (Sandbox Code Playgroud)

使用模型数据渲染模板:

var html = Mustache.to_html(template, model);
Run Code Online (Sandbox Code Playgroud)

结果是:

<a href="#product_detail?%7B%7Bid%7D%7D">link</a>
Run Code Online (Sandbox Code Playgroud)

如果模板更改为:

<div id='tmpl'>
    <a href='#product_detail?'{{id}}>link</a>
</div>
Run Code Online (Sandbox Code Playgroud)

生成的模板是:

<a href="#product_detail?" 0="">link</a>
Run Code Online (Sandbox Code Playgroud)

"问题"似乎是jQuery正在将模板中的单引号更改为双引号,这会混淆胡子.将胡须标记放在引号之外也不会给出正确的结果.怎么解决这个问题?

谢谢

小智 9

您需要在href中添加{{id}},如下所示:

href="#product_detail?{{id}}"
Run Code Online (Sandbox Code Playgroud)

我们曾经把我们的胡子模板放在一个带有type ="text/template"的脚本中,我不知道它是否会解决你的逃逸问题,但我们还没有.

<script type="text/template" id="tmpl">
   <a href href="#product_detail?{{id}}">link</a>
</script>
Run Code Online (Sandbox Code Playgroud)

如果你遇到了一些逃避问题,请在id之前使用&之前的&:

<script type="text/template" id="tmpl">
   <a href href="#product_detail?{{& id}}">link</a>
</script>
Run Code Online (Sandbox Code Playgroud)

希望它有所帮助!

  • @iRyusa"&"选项到底有什么作用? (3认同)