Ember 模型访问 belongsTo 属性 return null
Ember model access to belongsTo property return null
我有一个 Person 模型 属性 : address_fk: DS.belongsTo('address')
指的是 Address 模型。
在地址模型中,有几个属性,例如 zip_code , building ...
我的目标是在 Person 中创建一个计算的 属性 以通过访问 this.get('address_fk.zip_code')
显示完整地址,但它 returns 我 undefined
我肯定在这里遗漏了一些东西,但我真的不知道是什么。
更新:问题已解决,方法如下:
adresse: computed('adresse_fk', function() {
return DS.PromiseObject.create({
promise: this.get('adresse_fk').then((adresse) => {
return adresse.get('escalier_etage_appartement') + ' ' + adresse.get('batiment') + ' ' + adresse.get('numero_nom_voie') + ' ' + adresse.get('code_postal') + ' ' + adresse.get('commune_fk.nom')
})
});
}),
//Address
export default DS.Model.extend({
point_de_consommation_fk: DS.hasMany('pointdeconsommation'),
code_postal: DS.attr('string'),
escalier_etage_appartement: DS.attr('string'),
batiment: DS.attr('string'),
numero_nom_voie: DS.attr('string'),
commune_fk: DS.belongsTo('commune'),
personne_set: DS.hasMany('personne')
})
// Person model
export default DS.Model.extend({
categorie_code: DS.attr('personne-categorie-code'),
email: DS.attr('string'),
adresse_fk: DS.belongsTo('address'),
telephone1: DS.attr('string'),
telephone2: DS.attr('string', {defaultValue: ''}),
adresse: computed('adresse_fk', function() {
return this.get('adresse_fk.escalier_etage_appartement') + ' '
+ this.get('adresse_fk.batiment') + ' ' +
this.get('adresse_fk.numero_nom_voie')
}),
})
我也忘了告诉我,有时我的 undefined 值会显示
向上。也许我需要在调用 属性?
之前等待我的模板
您正在 Person
模型上定义计算 属性。计算的 属性 可能 return 地址的 PromiseObject。你可以试试这两个东西 -
1 检查是否存在 adresse_fk
// Person model
adresse: Ember.computed('adresse_fk', function() {
if this.get('adresse_fk'){
return this.get('adresse_fk.escalier_etage_appartement') + ' '
+ this.get('adresse_fk.batiment') + ' ' +
this.get('adresse_fk.numero_nom_voie')
}
2 使用 then
解决 promise
// Person model
adresse: Ember.computed('adresse_fk', function() {
this.get('adresse_fk').then( function(address){
return address.get('escalier_etage_appartement') + ' '
+ address.get('batiment') + ' ' +
address.get('numero_nom_voie')
}
}
我没有测试过它们,但它们应该可以工作。
我有一个 Person 模型 属性 : address_fk: DS.belongsTo('address')
指的是 Address 模型。
在地址模型中,有几个属性,例如 zip_code , building ...
我的目标是在 Person 中创建一个计算的 属性 以通过访问 this.get('address_fk.zip_code')
显示完整地址,但它 returns 我 undefined
我肯定在这里遗漏了一些东西,但我真的不知道是什么。
更新:问题已解决,方法如下:
adresse: computed('adresse_fk', function() {
return DS.PromiseObject.create({
promise: this.get('adresse_fk').then((adresse) => {
return adresse.get('escalier_etage_appartement') + ' ' + adresse.get('batiment') + ' ' + adresse.get('numero_nom_voie') + ' ' + adresse.get('code_postal') + ' ' + adresse.get('commune_fk.nom')
})
});
}),
//Address
export default DS.Model.extend({
point_de_consommation_fk: DS.hasMany('pointdeconsommation'),
code_postal: DS.attr('string'),
escalier_etage_appartement: DS.attr('string'),
batiment: DS.attr('string'),
numero_nom_voie: DS.attr('string'),
commune_fk: DS.belongsTo('commune'),
personne_set: DS.hasMany('personne')
})
// Person model
export default DS.Model.extend({
categorie_code: DS.attr('personne-categorie-code'),
email: DS.attr('string'),
adresse_fk: DS.belongsTo('address'),
telephone1: DS.attr('string'),
telephone2: DS.attr('string', {defaultValue: ''}),
adresse: computed('adresse_fk', function() {
return this.get('adresse_fk.escalier_etage_appartement') + ' '
+ this.get('adresse_fk.batiment') + ' ' +
this.get('adresse_fk.numero_nom_voie')
}),
})
我也忘了告诉我,有时我的 undefined 值会显示 向上。也许我需要在调用 属性?
之前等待我的模板您正在 Person
模型上定义计算 属性。计算的 属性 可能 return 地址的 PromiseObject。你可以试试这两个东西 -
1 检查是否存在 adresse_fk
// Person model
adresse: Ember.computed('adresse_fk', function() {
if this.get('adresse_fk'){
return this.get('adresse_fk.escalier_etage_appartement') + ' '
+ this.get('adresse_fk.batiment') + ' ' +
this.get('adresse_fk.numero_nom_voie')
}
2 使用 then
解决 promise
// Person model
adresse: Ember.computed('adresse_fk', function() {
this.get('adresse_fk').then( function(address){
return address.get('escalier_etage_appartement') + ' '
+ address.get('batiment') + ' ' +
address.get('numero_nom_voie')
}
}
我没有测试过它们,但它们应该可以工作。