2012-02-27 108 views

回答

23

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

从我的代码摘录(jQuery的阿贾克斯处理程序):

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

迈克加载......你能不能把包装代码成一个大包,以便我们可以看到生命周期?你如何存储外部模板?它是什么文件类型?你是用get还是getJSON加载它? – commadelimited 2012-03-18 03:19:45

+0

我从包含HTML实体的get调用的结果中检索模板内容,因为它们将以纯文本标准页面响应形式出现。 – 2012-04-04 10:56:33

+0

这是[我的]世界拯救解决方案:) Thx! – 2012-10-12 15:18:57

7

我只是在寻找同样的事情,我即将与片断低于

信用播放:borismus在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> 
+0

的确很有意思。加载单个模板更加简单。我以前的解决方案允许任何数量的模板加载*(更符合我的需要)*。 – 2012-04-04 10:58:09

+0

我明白了。我确实很喜欢更多的多模板“包含”文件,只是为了从HTML文件中获得一些噪音,而不是创建太多的请求。好决定 – joevallender 2012-04-04 11:03:15

1

我使用requirejs文本插件一起加载动态地处理模板。

r.js优化器将编译handlerbar模板的文本文件,它可以很容易地使用requirejs甚至AJAX

相关问题