2013-07-23 61 views
1

我正在使用的應用程序有一個事件頁面,用戶可以從他們自己和朋友處看到事件,並且可以使用內聯事件創建器(創建事件,那個非常相同的頁面/路線)。 爲了更精確一點,這些事件都會以新聞源樣式加載和顯示,這非常合適,但現在的問題是嘗試保存新的事件模型。我認爲一些代碼會使這個更容易理解。 的路線:在同一路線/資源上創建並顯示EmberData模型

this.resource('newsfeed', function() { 
    this.route('personal'); 
    this.route('whatever'); 
}); 

然後在NewsfeedIndexRoute該應用具有

model: function() { 
    return App.Event.find(); 
} 

在/新聞源顯示與一個ArrayController所有事件。這工作正常。

Furthermroe的應用程序有一個NewsfeedRouteController,以及因此事件創造者是所有子路由和保存的情況下,我們有以下代碼訪問:

App.NewsfeedRoute = Ember.Route.extend({ 
    setupController: function(controller){ 
     controller.newRecord(); 
    } 
}); 

App.NewsfeedController = Em.ObjectController.extend({ 
    newRecord: function() { 
     //The following line works but makes the API 'dirty' and an extra model needs to be created 
     this.set('content', App.Newsfeed.createRecord({title: "new title"})); 

     //The next line would be preferred, but overrides the displayed models at /newsfeed 
     //this.set('content', App.Event.createRecord({title: "new title"})); 
    }, 
    save: function() { 
     this.get('model').save(); 
    } 
}); 

所以,現在的問題是,當我轉到/ newsfeed並使用this.set('content', App.Event.createRecord({title: "new title"}));行時,它會覆蓋使用該模型在newsfeed/index.hbs模板中顯示的所有內容(只顯示「新標題」)。而且當你更多地輸入顯示的even-creator。這顯然不是我們想要的行爲。理想情況下,它應該以某種方式分離,然後保存到服務器。 您可以使用Newsfeed模型看到的另一行是解決方法,它可以很好地工作,但正如評論中提到的那樣,它感覺真的很像一個黑客,並且使API變得很髒,因爲使用帶有POST的/ events端點請求會更加RESTful。

因此,有沒有人有任何想法,如果有什麼辦法來實現現在與燼數據?

回答

2

有很多方法可以在燼中實現這一點。看起來你很接近一個很好的解決方案,但在這種情況下缺少的是一個EventController。它應該看起來很像你在App.NewsfeedController中所擁有的。

App.EventController = Em.ObjectController.extend({ 
    newRecord: function() { 
    this.set('content', App.Event.createRecord({title: "new title"})); 
}, 
    save: function() { 
    this.get('model').save(); 
    } 
}); 

現在,在您的模板,使用{{render}}助手添加

{{render event}} 

並定義event.hbs模板。

+0

謝謝你的工作出色。 – Markus

相關問題