How to use multiple models with a single route in EmberJS / Ember Data?

前端 未结 8 2023
一整个雨季
一整个雨季 2020-11-27 09:16

From reading the docs, it looks like you have to (or should) assign a model to a route like so:

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


        
8条回答
  •  死守一世寂寞
    2020-11-27 10:01

    https://stackoverflow.com/a/16466427/2637573 is fine for related models. However, with recent version of Ember CLI and Ember Data, there is a simpler approach for unrelated models:

    import Ember from 'ember';
    import DS from 'ember-data';
    
    export default Ember.Route.extend({
      setupController: function(controller, model) {
        this._super(controller,model);
        var model2 = DS.PromiseArray.create({
          promise: this.store.find('model2')
        });
        model2.then(function() {
          controller.set('model2', model2)
        });
      }
    });
    

    If you only want to retrieve an object's property for model2, use DS.PromiseObject instead of DS.PromiseArray:

    import Ember from 'ember';
    import DS from 'ember-data';
    
    export default Ember.Route.extend({
      setupController: function(controller, model) {
        this._super(controller,model);
        var model2 = DS.PromiseObject.create({
          promise: this.store.find('model2')
        });
        model2.then(function() {
          controller.set('model2', model2.get('value'))
        });
      }
    });
    

提交回复
热议问题