是否可以通过Ajax加载Handlebars模板?

时间:2012-02-27 17:18:52

标签: ember.js handlebars.js

我想动态加载其他模板。有可能吗?

3 个答案:

答案 0 :(得分:23)

您可以在Ember.TEMPLATES中注册新模板。然后他们将可以观看。

摘自我的代码(jQuery Ajax处理程序):

success: function(data) {
  $(data).filter('script[type="text/x-handlebars"]').each(function() {
    templateName = $(this).attr('data-template-name');
    Ember.TEMPLATES[templateName] = Ember.Handlebars.compile($(this).html());
  });
}

就是这样。

答案 1 :(得分:7)

我只是在寻找相同的东西,并准备玩下面的片段

credit:borismus on github https://gist.github.com/2165681

<script>
/*
 * Loads a handlebars.js template at a given URL. Takes an optional name, in which     case,
 * the template is added and is reference-able via templateName.
 */
function loadTemplate(url, name, callback) {
  var contents = $.get(url, function(templateText) {
    var compiledTemplate = Ember.Handlebars.compile(templateText);
    if (name) {
      Ember.TEMPLATES[name] = compiledTemplate
    } else {
      Ember.View.create({ template: compiledTemplate }).append();
    }
    if (callback) {
      callback();
    }
  });
}
</script>

答案 2 :(得分:1)

我正在使用requirejs和文本插件来动态加载车把模板。

r.js优化器会将处理程序栏模板编译为文本文件,可以使用requirejs甚至ajax轻松加载