J'essaie mes mains sur ember js et je ne suis pas capable de utiliser plusieurs modèles dans des modèles, des modèles simples avec des attributs de chaîne sont faciles ...Impossible de déléguer set ('personName', s) à la propriété 'content' du proxy d'objet <DS.PromiseObject: ember323>: son 'contenu' est indéfini
model/client.js
export default DS.Model.extend({
person: DS.belongsTo('person', {async: false, inverse: 'client'}),
postalAddress : DS.belongsTo('address', {async: false}) ,
residentialAddress : DS.belongsTo('address', {async: true}) ,
personName: DS.attr('string'), //added from person
greeting : DS.attr('string') //added from person
});
model/person.js
export default DS.Model.extend({
name : DS.attr('string'),
personName : DS.attr('string'),
greeting : DS.attr('string') ,
client: DS.belongsTo('client', {inverse: 'person'})
});
mon itinéraire itinéraires/client/créer
import Ember from 'ember';
export default Ember.Route.extend({
model() {
return Ember.RSVP.hash({
'client': this.get('store').createRecord('client' ,
{ //does this not initialize person
person: 'person', address: 'address'
}),
//)
//does this not initialize person
'person': this.get('store').createRecord('person',{
client: 'client'
}),
'address': this.get('store').createRecord('address')
}
);
}
});
mon modèle a une seule ligne:
{{client-form client=model.client person=model.client.person address=model.client.residentialAddress errors=model.errors onSave=(action "save") }}
dans mon client-form.hbs i avait des champs qui faisaient référence à client.person.personName ou client.person.greeting, et quand je taperais le premier caractère je recevrais pour saluer ou personName
Assertion Failed: Cannot call set with 'greeting' on an undefined object.
J'ai donc ajouté directement personName et salutation dans le modèle client et ajouté deux champs se référant à client.personName et client.greeting et ces champs ne me posent aucun problème. Je crois que le modèle de personne n'est pas initialisé et peut-être que le client est instancié mais la personne et l'adresse ne l'est pas et la personne est un objet indéfini.
La raison d'un tel modèle est que j'ai un backend java et mon ClientDTO ressemble:
public class ClientDTO /*implements IsSerializable*/ {
private PersonDTO personDTO;
private AddressDTO postalAddress;
private AddressDTO residentialAddress;
Où ai-je manqué l'initialisation de la personne et l'adresse, je peux trouver ppl avoir des erreurs « ne peut pas appeler obtenir sur undefined "mais pas dans l'ensemble. Edit: maintenant après avoir regardé quelques exemples en ligne j'ai changé mon contrôleur pour initialiser certains modèles
import Ember from 'ember';
export default Ember.Controller.extend({
actions: {
save() {
console.log("yes controller");
let client = this.model.client;
let person= this.model.person;
let residentialAddress = this.model.client.residentialAddress;
client.save().then(() => {
person.save();
residentialAddress.save();
this.transitionToRoute('message', {queryParams: {message: 'created'}});
});
}
}
});
et changé créer route vers
routes/client/create.js
export default Ember.Route.extend({
model() {
return Ember.RSVP.hash({
client: this.get('store').createRecord('client' ,
{
person: 'person', residentialAddress: 'address'
}),
//)
party: this.get('store').createRecord('person',{
client: '
client'
}),
residentialAddress : this.get('store').createRecord('address')
}
);
}
});
Maintenant je:
Assertion Failed: Cannot delegate set('partyName', aaa) to the 'content' property of object proxy <DS.PromiseObject:ember323>: its 'content' is undefined.
Ce qui est une autre façon de dire la même chose. Je pense que je ne crée pas les modèles correctement.