2015-01-15 72 views
5

我正在學習Ember應用程序。我已經設置了一個UI,其中父路線和模板在第一次打開時具有一個表格,例如,左側列中的今天的項目以及右側的變化區域:有關項目的詳細信息,新/編輯項目,搜索等Ember在保存記錄後更新父路線的模型

我碰到的麻煩是,當我保存一個新的項目,從父路線的左手錶不會更新新項目。無法找到一條獲得更新路線的方法。我來的櫥櫃是在模型上使用pushObject。

事情模板:

{{partial "things/table"}} 
{{outlet}} 

router.coffee

@resource "items", -> 
     @route "item", {path: "/:item_id"} 
     @route "new", {path: "/new"} 

項目路線:

ItemsRoute = Ember.Route.extend(
    model: -> @store.find 'item' 
) 

項新航線:

ItemsNewRoute = Ember.Route.extend 

    renderTemplate: -> 
     this.render('items/form') 

    model: -> 
     @store.createRecord('item') 

    setupController: (controller, model)-> 
     controller.set('model', model) 

項新的控制器:

ItemsNewController = Ember.ObjectController.extend(
    needs: 'items' 

    actions: 
     submit: -> @model.save().then(console.log('saved'(, console.log('failed'))    
     cancel: -> @transitionTo('items') 

    transitionAfterSave: (-> 
     if @get('content.id')  
      @transitionToRoute('items.item', @get('content')) 
    ).observes('content.id') 

回答

7
submit: -> @model.save().then(this.didSave.bind(this), console.log('failed')); 

didSave: function() { 
    console.log('saved'); 
    var route = this.container.lookup("route:items.index"); // use the name of route you want to refresh 
    route.refresh(); 
} 
+0

精彩!巨大的幫助。我怎麼能找到更多關於這個設施,「this.container.lookup」等?我很難在指南或API文檔中找到任何內容。 – hourback

+1

這是一個私人API(只有源代碼,沒有其他文檔,然後代碼中的評論),但有時需要達到在你的應用程序中做某些事情,你可以查看應用程序中的任何東西,但你冒這種風險新的燼升級之間的問題,如果它以某種方式改變,因爲私人APIS可以改變儘可能多的他們覺得合適,所以不建議使用很多,只是在某些情況下不時這樣,主要是我只是用它看我需要與控制器中的路徑進行交互 – flylib