如何动态地将“x-tmpl”脚本从脚本页面添加到HTML页面?

时间:2014-02-19 22:43:40

标签: javascript jquery html dom dynamic

我尝试过使用不同的方法:

  • 添加body innerHtml脚本部分
  • 使用“x-tmpl”
  • 类型创建脚本元素

但那没用。你能帮帮我吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

我在尝试动态加载Handlebars模板时遇到了类似的问题,因此我没有尝试将<script>元素插入到DOM中,而只是将编译后的模板存储到全局Javascript对象中:

var TEMPLATES = {};    

/**
 * Gets Handlebars template, either from JS if already loaded, or via AJAX request
 * @param name Name of template
 * @param data JSON data for use in template
 * @returns Handlebars template
 */
function get_template(name,data) {
  if(typeof TEMPLATES[name] != 'undefined') {
    return TEMPLATES[name];
  } else {
    $.get(
      TEMPLATE_ROOT + name + '.hb',
      function(template) {
        TEMPLATES[name] = Handlebars.compile(template);
        render_template(name,data);
      }
    );
    return null;
  }
}

注意成功加载模板后我对render_template(name,data)的调用。这只是调用我的函数再次尝试渲染模板,该模板现在将在内存中:

/**
 * Render JSON using Handlebars template
 * @param name Name of Handlebars template
 * @param data JSON data to render
 */
function render_template(name,data){
  var template = get_template(name,data);
  if(template !== null) {
    $('#main').html(template(data.transforms[1].data));
  }
}

我对你要做的事情做了很多假设,所以希望这会有所帮助。