2014-01-10 3 views
1

Я пытаюсь загрузить две модели по одному маршруту, и мне не удавалось это выяснить. Один маршрут для хранения всей информации для динамического создания формы, а другая модель - та, в которую он будет передавать данные представления формы. Вот некоторые из того, что я до сих пор:Загрузите две модели emberFire в один маршрут ember.js

Router Map

App.Router.map(function() { 
    this.route('about'); 
    this.route('plans'); 
    this.resource('prices', function() { 
     this.resource('price', { path: '/:price_id' }); 
    }); 
    this.resource('apply', function() { 
     this.resource('getstarted'); 
     this.resource('addresses'); 
     this.resource('contacts'); 
     this.resource('drivers'); 
     this.resource('equipment'); 
     this.resource('assign'); 
    }); 
}); 

Для маршрута я попробовал все три из следующих

Вариант 1

App.GetstartedRoute = Ember.Route.extend({ 
    model: function(){ 
     return Ember.Object.create({ 
      form: function() { 
       return EmberFire.Array.create({ 
        ref: new Firebase("https://example.firebaseio.com/apply/getstarted") 
       }); 
      }, 
      data: function() { 
       return EmberFire.Array.create({ 
        ref: new Firebase("https://example2.firebaseio.com/companies/-JAY7n7gXJeVbFCCDJdH/carriers/") 
       }); 
      }, 
     }); 
    } 
}); 

Вариант 2

App.GetstartedRoute = Ember.Route.extend({ 
    model: function(){ 
     return Ember.RSVP.hash({ 
      form: function() { 
       return EmberFire.Array.create({ 
        ref: new Firebase("https://example.firebaseio.com/apply/getstarted/") 
       }); 
      }, 
      data: function() { 
       return EmberFire.Array.create({ 
        ref: new Firebase("https://example2.firebaseio.com/companies/-JAY7n7gXJeVbFCCDJdH/carriers/") 
       }); 
      } 
     }); 
    } 
}); 

РЕШЕНИЕ Вариант 3 - как это было предложено kingpin2k

App.GetstartedRoute = Ember.Route.extend({ 
    model: function(){ 
     return Ember.Object.create({ 
      form: EmberFire.Array.create({ 
       ref: new Firebase("https://moveloaded-ember.firebaseio.com/apply/getstarted/") 
      }), 
      data: EmberFire.Array.create({ 
       ref: new Firebase("https://logistek.firebaseio.com/companies/-JAY7n7gXJeVbFCCDJdH/carriers/") 
      }) 
     }); 
    } 
}); 

FireBase JSON на getstarted

{ 
    "_type" : "object", 
    "1" : { 
    "type" : "text", 
    "placeholder" : "Type it in here...", 
    "name" : "carrierName", 
    "caption" : "What's the name of your carrier?" 
    } 
} 

форма создается с помощью рекурсии через первую модель, помещая данные в компонент, который генерирует форму. Я пытался получить доступ к массивам emberFire в первой модели, используя все следующие:

{{model.form.type}} {{form.type}}

{{#each form}} 
    {{type}} 
{{/each}} 

{{#each model.form}} 
    {{type}} 
{{/each}} 

{{#each}} 
    {{form.type}} 
{{/each}} 

Но это не работает ...

Любые идеи?

Update 1:

Исправление использует вариант 3, как было предложено kingpin2k

Кроме того, я должен был сделать следующее изменение в моей GetstartedController:

от: App.GetstartedController = Ember.ArrayController.extend

до: App.GetstartedController = Ember.ObjectController.extend

Тогда доступ к модели форма была так просто, как:

{{#each form}} 
    {{type}} 
{{/each}} 

ответ

0

глядя на firebase коде не выглядит, как он предоставляет никаких обещаний (так Ember.RSVP.hash не будет делать вам любой хороший). При этом вы, по сути, просто создадите хэш с двумя полями и вернете это.

return Ember.Object.create({ 
    form: EmberFire.Array.create({ 
      ref: new Firebase("https://example.firebaseio.com/apply/getstarted") 
     }), 
    data: EmberFire.Array.create({ 
      ref: new Firebase("https://example2.firebaseio.com/companies/-JAY7n7gXJeVbFCCDJdH/carriers/") 
     }) 
}); 
+0

Я попытался это так, но не смогли получить доступ к массивам EmberFire ... Я пробовал все следующий: '{{model.form.type}}' '{{форму ,type}} ',' {{#each form}} {{type}} {{/ each}} 'и' {{#each model.form}} {{type}} {{/ each}} ' – OgdenIT

+0

Можете ли вы создать фиктивный пример на emberjs.jsbin.com, и я с удовольствием рассмотрю его. – Kingpin2k

+1

Огромное вам спасибо, что попросил меня создать jsbin !!!! Во время создания вами урезанной примерной версии моего приложения работа с вашим решением зависела. Проблема была в моем контроллере для этого маршрута ... Он все еще пытался получить доступ к данным, как если бы это была обычная модель, а не созданный новый объект модели. Исправление было связано с изменением '' 'App.GetstartedController = Ember.ArrayController.extend'''' '' App.GetstartedController = Ember.ObjectController.extend''' – OgdenIT

Смежные вопросы