<legend id='pwSE7'><style id='pwSE7'><dir id='pwSE7'><q id='pwSE7'></q></dir></style></legend>

  • <i id='pwSE7'><tr id='pwSE7'><dt id='pwSE7'><q id='pwSE7'><span id='pwSE7'><b id='pwSE7'><form id='pwSE7'><ins id='pwSE7'></ins><ul id='pwSE7'></ul><sub id='pwSE7'></sub></form><legend id='pwSE7'></legend><bdo id='pwSE7'><pre id='pwSE7'><center id='pwSE7'></center></pre></bdo></b><th id='pwSE7'></th></span></q></dt></tr></i><div id='pwSE7'><tfoot id='pwSE7'></tfoot><dl id='pwSE7'><fieldset id='pwSE7'></fieldset></dl></div>
    <tfoot id='pwSE7'></tfoot>
        <bdo id='pwSE7'></bdo><ul id='pwSE7'></ul>

        <small id='pwSE7'></small><noframes id='pwSE7'>

      1. 在 CoffeeScript 中,是否有一种“官方"方法可以在运行时而不是在编译时插入字符串?

        In CoffeeScript, is there an #39;official#39; way to interpolate a string at run-time instead of when compiled?(在 CoffeeScript 中,是否有一种“官方方法可以在运行时而不是在编译时插入字符串?)
      2. <tfoot id='VVFjb'></tfoot>
        <legend id='VVFjb'><style id='VVFjb'><dir id='VVFjb'><q id='VVFjb'></q></dir></style></legend>

            <tbody id='VVFjb'></tbody>
        1. <small id='VVFjb'></small><noframes id='VVFjb'>

          1. <i id='VVFjb'><tr id='VVFjb'><dt id='VVFjb'><q id='VVFjb'><span id='VVFjb'><b id='VVFjb'><form id='VVFjb'><ins id='VVFjb'></ins><ul id='VVFjb'></ul><sub id='VVFjb'></sub></form><legend id='VVFjb'></legend><bdo id='VVFjb'><pre id='VVFjb'><center id='VVFjb'></center></pre></bdo></b><th id='VVFjb'></th></span></q></dt></tr></i><div id='VVFjb'><tfoot id='VVFjb'></tfoot><dl id='VVFjb'><fieldset id='VVFjb'></fieldset></dl></div>
            • <bdo id='VVFjb'></bdo><ul id='VVFjb'></ul>
                  本文介绍了在 CoffeeScript 中,是否有一种“官方"方法可以在运行时而不是在编译时插入字符串?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  我的 CS 类中有一个选项对象,我想在其中保留一些模板:

                  I have an options object in my CS class, and I'd like to keep some templates in it:

                  class MyClass
                      options:
                          templates:
                              list: "<ul class='#{ foo }'></ul>"
                              listItem: "<li>#{ foo + bar }</li>"
                              # etc...
                  

                  然后我想稍后在代码中插入这些字符串...但是当然这些被编译为 "<ul class='" + foo +"'></ul>",而 foo 是未定义的.

                  Then I'd like to interpolate these strings later in the code... But of course these are compiled to "<ul class='" + foo +"'></ul>", and foo is undefined.

                  是否有官方的 CoffeeScript 方法可以在运行时使用 .replace() 执行此操作?

                  Is there an official CoffeeScript way to do this at run-time using .replace()?

                  我最终编写了一个小实用程序来提供帮助:

                  I ended up writing a little utility to help:

                  # interpolate a string to replace {{ placeholder }} keys with passed object values
                  String::interp = (values)->
                      @replace /{{ (w*) }}/g,
                          (ph, key)->
                              values[key] or ''
                  

                  所以我的选项现在看起来像:

                  So my options now look like:

                  templates:
                      list: '<ul class="{{ foo }}"></ul>'
                      listItem: '<li>{{ baz }}</li>'
                  

                  然后在后面的代码中:

                  template = @options.templates.listItem.interp
                      baz: foo + bar
                  myList.append $(template)
                  

                  推荐答案

                  我想说,如果你需要延迟评估,那么它们可能应该被定义为函数.

                  I'd say, if you need delayed evaluation, then they should probably be defined as functions.

                  也许单独取值:

                  templates:
                      list: (foo) -> "<ul class='#{ foo }'></ul>"
                      listItem: (foo, bar) -> "<li>#{ foo + bar }</li>"
                  

                  或来自上下文对象:

                  templates:
                      list: (context) -> "<ul class='#{ context.foo }'></ul>"
                      listItem: (context) -> "<li>#{ context.foo + context.bar }</li>"
                  

                  <小时>

                  鉴于您现在以前的评论,您可以像这样使用上面的第二个示例:


                  Given your now-former comments, you could use the 2nd example above like so:

                  $(options.templates.listItem foo: "foo", bar: "bar").appendTo 'body'
                  

                  这篇关于在 CoffeeScript 中,是否有一种“官方"方法可以在运行时而不是在编译时插入字符串?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

                  相关文档推荐

                  Rails/Javascript: How to inject rails variables into (very) simple javascript(Rails/Javascript:如何将 rails 变量注入(非常)简单的 javascript)
                  quot;Each child in an array should have a unique key propquot; only on first time render of page(“数组中的每个孩子都应该有一个唯一的 key prop仅在第一次呈现页面时)
                  Rails 3.1 ajax:success handling(Rails 3.1 ajax:成功处理)
                  CoffeeScript always returns in anonymous function(CoffeeScript 总是以匿名函数返回)
                  Ordinals in words javascript(javascript中的序数)
                  getFullYear returns year before on first day of year(getFullYear 在一年的第一天返回前一年)
                    <i id='bBRa6'><tr id='bBRa6'><dt id='bBRa6'><q id='bBRa6'><span id='bBRa6'><b id='bBRa6'><form id='bBRa6'><ins id='bBRa6'></ins><ul id='bBRa6'></ul><sub id='bBRa6'></sub></form><legend id='bBRa6'></legend><bdo id='bBRa6'><pre id='bBRa6'><center id='bBRa6'></center></pre></bdo></b><th id='bBRa6'></th></span></q></dt></tr></i><div id='bBRa6'><tfoot id='bBRa6'></tfoot><dl id='bBRa6'><fieldset id='bBRa6'></fieldset></dl></div>

                    <tfoot id='bBRa6'></tfoot>

                      <tbody id='bBRa6'></tbody>

                    <small id='bBRa6'></small><noframes id='bBRa6'>

                          <bdo id='bBRa6'></bdo><ul id='bBRa6'></ul>

                            <legend id='bBRa6'><style id='bBRa6'><dir id='bBRa6'><q id='bBRa6'></q></dir></style></legend>