Wydaje się, że w przypadku tras zagnieżdżonych każdy haczyk model
każdej linii jest wywoływany przed wywołaniem dowolnego z haków setupController
. W jaki sposób dziecko może bezpiecznie dotrzeć do modelu rodzica?W jaki sposób ścieżka podrzędna (lub zasób) może uzyskać dostęp do modelu zasobu nadrzędnego z poziomu przechwytywania modelu?
W moim przypadku modele nie są faktycznie trwałymi obiektami. Są one generowane, w oparciu o parametry, w hakach modelu. Więc nie sądzę, że wydaje mi się, że jest to jedna z najbardziej obiecujących odpowiedzi. Idealnie, model macierzysty powinien być dostępny poprzez ParentController
, nie? A może to podejście nie jest zgodne z najlepszymi praktykami?
App.Router.map(function() {
this.resource("parent", { path: "parent/:name" }, function() {
this.route('child');
});
});
App.ParentRoute = Ember.Route.extend({
model: function(params) {
// build a model here, based on params.
// no asynch stuff happening, should be good to go.
return { lastName: params.name }
},
setupController(controller, model) {
controller.set('model', model);
}
});
App.ChildRoute = Ember.Route.extend({
model: function(params) {
parentModel = this.controllerFor('parent').get('model');
return {lastName: parentModel.get('name') + 'son' };
// parent Model is null
// need the parent model HERE,
// but I can't get it through the controller yet
// as setupController in the parent route hasn't been called yet
}
});
Uwielbiam, gdy możesz odpowiedzieć na własne pytanie. –
Dzięki @doublea. Chciałbym dalej wyjaśnić, że argument, który przekazujesz do 'modelFor', jest nazwą trasy macierzystej, której model chcesz. Na przykład. 'user',' user.posts', itd. Oraz [tutaj są dokumenty] (http://emberjs.com/api/classes/Ember.Route.html#method_modelFor). –
Dziękuję bardzo @ steve.hanson, robiłem to z górną walizką wielbłąda, a nie z notacją kropkową !! –