我正在尝试使用Ember的Handlebars引擎来实现非UI相关目的。我有一系列文本模板(基本上是占位符+静态文本),比如
Order number {{number}} / {{year}}
我在控制器功能中使用以下代码(为了示例,这里简化了):
formattedTitle: function(order) {
var orderTitle = "Order number {{number}} / {{year}}";
var template = Handlebars.compile(orderTitle);
return template(order);
}
offer
是一个Ember.data记录,包含两个字段。
当我运行该函数时,结果字符串只包含静态文本:
订单号/
它仅适用于{{id}}
属性,可能是因为您可以在Ember.data记录上执行order.id
,但不能order.number
(您必须使用get - {{1} })
知道如何解决这个问题吗?
答案 0 :(得分:3)
您可以使用Ember's Object.getProperties()
将多个属性拉入一个简单的javascript对象,并将其作为Handlebars上下文传递。不确定这是最好的方法,但是......
formattedTitle: function() {
var order = Ember.Object.create({number: 1, year: 2013});
// retrieve the properties ahead of time using Ember getter
var orderContext = order.getProperties(['number', 'year']);
var orderTitle = "Order number {{number}} / {{year}}";
var template = Handlebars.compile(orderTitle);
var output = template(order);
return output;
}
答案 1 :(得分:2)
尝试这样的事情:
function formattedTitle(order) {
var number = order.get('number');
var year = order.get('year');
var orderContext = { number: number, year: year };
var orderTitle = "Order number {{number}} / {{year}}";
var template = Handlebars.compile(orderTitle);
var output = template(orderContext);
return output;
}