2015-01-15 8 views
5

Pracuję nad aplikacją Ember z zamiarem uczenia się. Ustawiłem w interfejsie użytkownika, w którym nadrzędna trasa i szablon po pierwszym otwarciu zawiera tabelę, na przykład dzisiejszych pozycji w lewej kolumnie, oraz obszar po prawej, który zmienia się: szczegóły dotyczące przedmiotu, formularz dla nowego/edytuj element, szukaj itp.Ember aktualizuje model trasy nadrzędnej po zapisaniu zapisu

Problemem, który napotkam, jest to, że po zapisaniu nowego elementu tabela lewej ręki z trasy nadrzędnej nie jest aktualizowana o nowy element. Masz problem ze znalezieniem sposobu na odświeżenie tej trasy. Szafa, którą przyszedłem, polegała na użyciu pushObject na modelu.

rzeczy szablon:

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

router.coffee

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

przedmioty trasa:

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

szt nowa trasa:

ItemsNewRoute = Ember.Route.extend 

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

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

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

przedmiotów nowy kontroler:

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') 

Odpowiedz

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

Wonderful! Ogromna pomoc. Jak mogę znaleźć więcej informacji na temat tego obiektu, "this.container.lookup" itd.? Mam trudności ze znalezieniem czegokolwiek w przewodnikach lub dokumentach API. – hourback

+1

to prywatny api (tylko kod źródłowy, brak dokumentów innych niż komentarze w kodzie), ale czasami trzeba się z nim skontaktować, by zrobić pewne rzeczy w aplikacji, możesz wyszukać wszystko w aplikacji, ale ryzykujesz, że spowoduje to problemy między nowymi aktualizacjami embera, jeśli zostaną zmienione w jakiś sposób, ponieważ prywatne api mogą zmieniać się tak często, jak im się podoba, więc nie zaleca się używania dużo, tylko w pewnych sytuacjach od czasu do czasu, jak to, głównie po prostu używam tego, aby wyglądać od czasu do czasu trasy w kontrolerach, z którymi muszę się komunikować – flylib

Powiązane problemy