我有一个非常基本的设置,我正在尝试在Controller中格式化日期。问题是我无法在下面的formattedStart
函数中访问它,而我可以在summaryRowAction
处理程序中访问它。这让我感到困惑,因为两个地方的console.logging this
给出了相同的结果。但由于formattedStart
内部的某些原因,this.get('model.startDate')
未定义。
App.SummaryRowController = Ember.ObjectController.extend({
formattedStart: function(){
console.log(this.get('model.startDate');)
return this.get('model.startDate');
}.property(),
actions: {
summaryRowAction: function(){
console.log(this.get('model.startDate'));
}
}
});
这是我的模型和我的模板(在Jade中)供参考:
App.PricingSummary = DS.Model.extend({
startDate: DS.attr(),
endDate: DS.attr(),
days: DS.hasMany('day', {async: true}),
property: DS.belongsTo('property', {async: true})
});
script(type="text/x-handlebars", data-template-name="summaryRow")
.summaries__summary("{{action 'summaryRowAction'}}")
.summaries__summary--item{{formattedStart}} — {{endDate}}
答案 0 :(得分:0)
这是因为评估属性的第一个(也是唯一一个)时间model
实际上是null
。您需要将startDate
指定为属性中的依赖项,以便Ember知道在数据更改时重新评估。此外,您在对象控制器中不需要model.*
,属性会自动委托给content
/ model
所以:
formattedStart: function(){
console.log(this.get('startDate');)
return this.get('startDate');
}.property('startDate'),