2017-03-14 2 views
1

je une suite dans la liste déroulante et ont besoin comme ceci: le niveau 2 se charge de manière indépendante, mais level3 se charge en fonction de niveau 2, level4 chargement basé sur level3cascade sélectionner les données de liaison dans ember.js

Je suis novice à braise js s'il vous plaît aidez-moi quelle est l'approche conventionnelle correcte pour y parvenir. (désolé pour le mauvais anglais)

+1

avez-vous le faire fonctionner? Pourquoi posez-vous des questions sans laisser de commentaires? –

+0

désolé pour réponse tardive J'ai lutté d'autres façons de le faire jusqu'à ce que trouvé c'est la meilleure façon de le faire. – Prageeth

Répondre

1

Vous devez utiliser DS.promiseArrays pour effectuer des propriétés calculées asynchrones. J'ai noté un pseudo code de base. Fondamentalement, data1 est chargé dans route (hook du modèle par exemple). data2 dépend de la sélection de data1. Quand il est sélectionné, un appel asynchrone est déclenché et les données de select2 sont récupérées. Et cela suit le troughout proccess ..

HBS

{{select 
    data=selectData1 < This is preloaded 
    selection=data1}} 

JS

select2Data: function() { 
    return DS.PromiseArray.create({ 
     promise: store.query('x/y', { c : data1.get('id') }) < this should resolve to array 
    }) 
}.property('data1') 

HBS

{{#if select2Data.length}} 
     {{select 
      data=selectData2 < This is based on selection1 
      selection=data2}} 
{{/if}} 

JS (Identique au précédent, mais utilise données2)

select3Data: function() { 
    return DS.PromiseArray.create({ 
     promise: store.query('x/y', { c : data2.get('id') }) 
    }) 
}.property('data2') 

HBS

{{#if select3Data.length}} 
      {{select 
       data=selectData3 < This is based on selection2 
       selection=data3}} 
{{/if}}