2017-09-29 4 views
0

J'ai un formulaire de saisie de commande de base avec des champs d'adresse de facturation et d'expédition (tous deux basés sur un modèle 'adresse'). J'ai une case à cocher qui dit "adresse de facturation même que l'expédition?" Lorsque cette case est cochée, les données d'adresse de facturation sont copiées dans l'adresse de livraison.ember: copier les données du modèle dans un autre

enter image description here

Comment puis-je faire cela? Ce n'est pas tout à fait évident pour moi. Je pense que lorsque le bouton "suivant" est cliqué, si la valeur "billShipSame" = true alors copiez les données. Mais comment copiez-vous réellement les données? Ou suis-je juste d'aborder ce problème mal?

Le modèle ressemble:

export default DS.Model.extend(Validations, { 
    type: attr('string'), 
    firstName: attr('string'), 
    lastName: attr('string'), 
    address1: attr('string'), 
    address2: attr('string'), 
    city: attr('string'), 
    state: attr('string'), 
    country: attr('string'), 
    postalCode: attr('string'), 
    phone: attr('string') 
}); 

Et voici une version allégée de la façon dont je les utiliser:

billingAddress: computed(function() { 
    return this.get('store').createRecord('address', { type: 'billing'}); 
}), 

shippingAddress: computed(function() { 
    return this.get('store').createRecord('address', { type: 'shipping'});  
}), 

orderModel: computed(function() { 
    return this.get('store').createRecord('order', { 
     billingAddress: this.get('billingAddress'), 
     shippingAddress: this.get('shippingAddress') 
    }); 
}), 

Répondre

1

Je vous suggère d'avoir « même que la facturation » bouton radio déclencher une action qui copie les données dans les champs appropriés. De cette façon, par la fois que quelqu'un clique sur suivant, votre modèle de données est en bonne forme et votre action de soumission peut se concentrer sur les économies d'

Edit:

Ces façon la plus simple de copier des valeurs entre deux modèles est la suivante:

shippingAddress.setProperties(billingAddress.getProperties('firstName','lastName')); // etc 

qui devrait gérer Croyez ce que vous êtes après ...

+0

Eh bien, les paramètres par défaut « même que la facturation » à oui (parce que ce sera le cas pour la plupart des consommateurs). Mais ma question est, littéralement, quelle est la syntaxe pour copier les données d'un modèle à l'autre? – tarponjargon

+0

Ah, je ne savais pas que :-) Mis à jour ma réponse – acorncom