2014-01-10 61 views
1

我試圖在一個路徑中加載兩個模型,並沒有任何運算能力。一種路徑來保存所有信息來動態創建一個表單,另一種模式是將表單提交數據推送到其中的一種。這裏是一些什麼我迄今:在一個ember.js路徑中加載兩個emberFire模型

路由器地圖

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/") 
      }) 
     }); 
    } 
}); 

火力JSON在getstarted

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

經由穿過所述第一模型遞歸創建的形式提出,將數據放入生成表單的組件中。我試圖訪問使用以下所有的第一個模型的餘燼陣列:

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

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

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

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

但它不工作...

任何想法?

更新1:

的修復使用選項3通過kingpin2k

也的建議,我不得不讓我GetstartedController以下變化:從

App.GetstartedController = Ember.ArrayController.extend

至: App.GetstartedController = Ember.ObjectController.extend

然後訪問形式模型是簡單:

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

回答

0

看火力點代碼它看起來並不像它暴露任何承諾(所以Ember.RSVP.hash不會做你任何好的)。這就是說你基本上只是創建一個2字段的散列並返回。

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}},'{{form 。類型}},{{#每個表單}} {{類型}} {{/每個}}和'{{#each model.form}} {{type}} {{/每個}} – OgdenIT

+0

你可以在emberjs.jsbin.com上設置一個虛擬示例,我會很樂意研究它。 – Kingpin2k

+1

非常感謝你讓我創建一個jsbin!在創建我的應用程序的簡化示例版本的過程中,驚人的事情與您的解決方案一起工作。問題出在我的控制器中,它仍然試圖訪問數據,好像它仍然是一個常規模型,而不是創建的新模型對象。解決的辦法是將'''App.GetstartedController = Ember.ArrayController.extend''改成'''App.GetstartedController = Ember.ObjectController.extend''' – OgdenIT

相關問題