从 Ember 中的控制器访问模型
Accessing a model from a controller in Ember
我有一个非常基本的设置,我试图在我的控制器中设置日期格式。问题是我无法在下面的 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}}
这是因为 属性 第一次(也是唯一一次)求值,model
实际上是 null
。您需要将 startDate
指定为 属性 中的依赖项,以便 Ember 知道在数据更改时重新评估。此外,您不需要在对象控制器中使用 model.*
,属性会自动委托给 content
/model
所以:
formattedStart: function(){
console.log(this.get('startDate');)
return this.get('startDate');
}.property('startDate'),
我有一个非常基本的设置,我试图在我的控制器中设置日期格式。问题是我无法在下面的 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}}
这是因为 属性 第一次(也是唯一一次)求值,model
实际上是 null
。您需要将 startDate
指定为 属性 中的依赖项,以便 Ember 知道在数据更改时重新评估。此外,您不需要在对象控制器中使用 model.*
,属性会自动委托给 content
/model
所以:
formattedStart: function(){
console.log(this.get('startDate');)
return this.get('startDate');
}.property('startDate'),