【问题标题】:escaping curly braces in jquery templates and knockout js在 jquery 模板和淘汰赛 js 中转义花括号
【发布时间】:2011-07-10 21:12:39
【问题描述】:

我有一个 jquery 模板,其中我将淘汰 js 绑定到函数文字,函数文字里面有花括号,它们被模板引擎错误地解释了,这里是模板:

<button {{html "data-bind='click: function(){ loadProduct(" + i + ") }'" }}>${ product.Name }</button>

有什么办法可以避开这些大括号?我尝试了 {#literal} 标记但没有成功,我也将所有内容都包裹在 {{ html }} 标记中,因为“data-bind”中的连字符也被引擎错误地解释了。

【问题讨论】:

    标签: jquery-templates knockout.js


    【解决方案1】:

    如果你想在你的 jQuery 模板中添加 data-bind 属性,那么没有必要做这么多的转义。

    我假设在您的情况下,“i”是使用 {{each(i, product) Products}} 之类的东西循环浏览您的产品。在你的模板中,你可以像这样定义这个元素:

    <button data-bind="click: function(){ loadProduct(i); }">${product.Name}</button>
    

    它将无需连接字符串即可访问函数中的变量“i”。

    示例:http://jsfiddle.net/rniemeyer/Pq5Vd/

    谢谢。

    【讨论】:

    • 非常感谢!我已经被这个问题困扰了一段时间了,真的,谢谢。
    【解决方案2】:

    你确定是这个问题吗? jQuery 模板应该只识别双大括号。单卷曲应该可以像这里一样正常工作> http://jsfiddle.net/neebz/9fsv2/

    【讨论】:

      猜你喜欢
      • 2013-02-19
      • 2016-02-27
      • 1970-01-01
      • 2012-02-19
      • 2013-03-09
      • 2011-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多