2014-02-13 16 views
5

Ich habe eine Master/Detailansicht in Ember. Wenn ich die Detailseite direkt aufruft, benötigt der Modell-Hook der Detailseite das Modell (Daten) vom übergeordneten (Master). Der Detailmodell-Hook wird aufgerufen - was ist der richtige Weg, um das Modell zu erhalten/aufzurufen, so dass die ModelFor-Funktion im Detail-Hook funktioniert.Ember.js - Aufruf Eltern Modell Haken, um Daten für Kind zu laden

Router:

App.Router.map(function(){ 
    this.resource('index', { path: '/' }); 
    this.resource('devices', { path: '/devices'}, function() { 
     this.resource('device', { path: ':imei'}); 
    }); 
}); 

Master-Route:

App.DevicesIndexRoute = Ember.Route.extend({ 
    model: function() { 

     var self = this; 
     return requestController.get({ 
      url: "foo/bar/", 
      success: function(data) { 
       console.log(data); 
       return data; 
      }, 
      error: function() { 
       console.log("error"); 
       return []; 
      } 
     }); 
    } 
}); 

Details Route:

App.DeviceRoute = Ember.Route.extend({ 
     model: function(args) { 
////// Gets Called - needs data from master!! 
      var model = this.modelFor('devices.index').findBy('imei', args.imei); 
      return model; 
     } 
    }); 

Vielen Dank für Hilfe

Antwort

5

Die devices.index Route ist nicht die Mutter Route, es ist eine andere Blatt Route. Normalerweise würden Sie das Modell auf der Ressource Route definieren und Zugriff dann durch die Blatt Routen:

App.Router.map(function(){ 
    this.resource('index', { path: '/' }); 
    this.resource('devices', { path: '/devices'}, function() { 
     this.route('device', { path: ':imei'}); 
    }); 
}); 

Master-Route:

App.DevicesRoute = Ember.Route.extend({ 
    model: function() { 

     var self = this; 
     return requestController.get({ 
      url: "foo/bar/", 
      success: function(data) { 
       console.log(data); 
       return data; 
      }, 
      error: function() { 
       console.log("error"); 
       return []; 
      } 
     }); 
    } 
}); 

Index Strecke: (in Zukunft ember Versionen wird dies automatisch abholen Eltern Modell)

App.DevicesIndexRoute = Ember.Route.extend({ 
    model: function() { 
     this.modelFor('devices'); 
    } 
}); 

Details Route:

App.DevicesDeviceRoute = Ember.Route.extend({ 
    model: function(args) { 
     var model = this.modelFor('devices').findBy('imei', args.imei); 
     return model; 
    } 
}); 
+0

Danke Kumpel. Ich habe es gelöst! – thpnk