2

我一直在寻找一段时间,是如何在评估模板时获取 HTML。

在 Handlebars 中,这是非常严格的:

var source   = $("#entry-template").html();
var template = Handlebars.compile(source);
var context = {title: "My New Post", body: "This is my first post!"}
var html    = template(context); 

但是,对于 Ember,情况有所不同,我想知道如何实现这一点。目前,我只能想到:

var template = App.MyView.create() ;
var html = template.??????????

有什么建议么 ?

4

2 回答 2

3

这个怎么样:

var view = App.MyView.create();
var $elem;
Ember.run(function() {
    $elem = $('<div>');
    view.appendTo($elem);
});
var html = $elem.html();
于 2013-02-17T16:34:34.433 回答
1

自从最初的答案以来,事情似乎发生了一些变化,Ember 不再支持创建没有父容器的视图(请参阅https://gist.github.com/stefanpenner/5627411),并且会抛出错误:Using the defaultContainer is no longer supported. [defaultContainer#lookup].

要解决这个问题,有两个选项: this.createChildView(viewClass, viewAttributes) 或者 this.container.lookup('view:view-class')然后在视图上设置属性。

两者中,createChildView是最容易实施和更好的实践。

考虑到这一点,本的答案看起来更像:

var view = this.createChildView(App.MyView);
var $elem;
Ember.run(function() {
    $elem = $('<div>');
    view.appendTo($elem);
});
var html = $elem.html();
于 2014-10-08T20:24:46.700 回答