javascript-使用指定值编译Ember模板
作者:互联网
我需要从Ember.TEMPLATES获取模板,使用指定的对象对其进行编译,并获取其原始HTML值.
Ember.TEMPLATES内容(使用gruntjs生成)返回一个函数,并且似乎已经通过Handlebars.template()函数传递,因此例如,我将具有以下内容:
Ember.TEMPLATES["test"] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {
this.compilerInfo = [4,'>= 1.0.0'];
helpers = this.merge(helpers, Ember.Handlebars.helpers); data = data || {};
var buffer = '', hashTypes, hashContexts, escapeExpression=this.escapeExpression;
data.buffer.push("<strong>hello world ");
hashTypes = {};
hashContexts = {};
data.buffer.push(escapeExpression(helpers._triageMustache.call(depth0, "test", {hash:{},contexts:[depth0],types:["ID"],hashContexts:hashContexts,hashTypes:hashTypes,data:data})));
data.buffer.push("</strong>\n");
return buffer;
});
并希望使用JSON对象中的新值来编译该模板.
我根据在Ember代码中看到的内容尝试了类似的方法:
var test = Ember.TEMPLATES['test'];
var compiled = test({ test: 'value' });
我认为这可能有效,但实际上不可行.
基本上,我想使用标准把手:
Handlebars.compile('<strong>{{hello}}</strong>', { hello: 'world' });
有什么方法可以编译具有指定值的模板,并使用Emberjs获得HTML结果?
解决方法:
Ember做some modifications in handlebars compiler以启用计算属性的使用,在模型更改时使模板更新等.
如果看到view render method,它的作用不只是template(context),它使用了上下文和一些私有自定义数据.因此,Handlebars.compile与Ember.Handlebars.compile不同,我认为Ember.Handlebars.compile中的已编译模板不应在Ember.View之外使用.
使用text / x-raw-handlebars(而不是text / x-handlebars)标记脚本类型,可以使用Handlebars.compile来编译模板.
以下示例将起作用,但没有余烬功能:
模板
<script type="text/x-raw-handlebars" data-template-name="custom-template">
First name: {{firstName}} <br/>Last name: {{lastName}}
</script>
Java脚本
App = Ember.Application.create({
ready: function() {
var template = Ember.TEMPLATES['custom-template'];
var html = template({ firstName: 'Tom', lastName: 'Dale' });
$('body').append(html);
}
});
您可以在这里查看此样本http://jsfiddle.net/marciojunior/MC8QB/
标签:handlebars-js,ember-js,javascript 来源: https://codeday.me/bug/20191122/2061044.html