Ember.js 从Ember中的控制器访问模型的正确方法是什么

Ember.js 从Ember中的控制器访问模型的正确方法是什么,ember.js,ember-model,Ember.js,Ember Model,我想知道从控制器访问模型的正确方法是什么 我注意到在控制器的init中,模型仍然为空 #controller.js init(){ console.log(this.model); // IS NULL } 但是setupController方法具有填充的模型。因此,目前我正在从setupController调用一个控制器的方法,并在那里传递模型。这样好吗 我想在控制器中会有一个回调方法,在设置控制器时会自动调用该方法。setupControllerhook方法将模型设置为控制器的属性 s

我想知道从控制器访问模型的正确方法是什么

我注意到在控制器的init中,模型仍然为空

#controller.js

init(){
  console.log(this.model); // IS NULL
}
但是setupController方法具有填充的模型。因此,目前我正在从setupController调用一个控制器的方法,并在那里传递模型。这样好吗


我想在控制器中会有一个回调方法,在设置控制器时会自动调用该方法。

setupController
hook方法将模型设置为控制器的属性

setupController(controller,model){
 this._super(...arguments);
}

您可以像控制器中的普通其他属性一样获取模型
this.get('model')
setupController
钩子方法将模型设置为控制器的属性

setupController(controller,model){
 this._super(...arguments);
}
您可以像控制器中的普通其他属性一样获取模型
this.get('model')
route.js

  model() {
    return this.store.findAll("post");
  },  
  setupController(controller, model){
    controller.set('model', model);
  }
这将给出控制台日志模型,它是post对象的集合

controller.js

 init(){
  console.log(this.model);
 }
我们大多数时候都这样做,尤其是当您使用RSVP承诺时 您选择了控制器上的模型

范例

 model(params) {
    return Ember.RSVP.hash({
      lecture: this.store.findRecord('section', params.section_id).then((section)=>{
        return this.store.createRecord('lecture',{
          section: section
        });
      }),
      section:this.store.findRecord('section', params.section_id),
      course: this.store.query('course',{filter:{section_id:params.section_id}})
    });
  },
  setupController(controller,model){
    controller.set('model', model.lecture);
    controller.set('section', model.section);
    controller.set('course', model.course);

  }
请注意,若路线上只有简单的模型

 model(params) {
        return this.store.findRecord('course', params.course_id);
      }
您不必在控制器上进行任何设置,这也可能为您提供控制器上的模型。

route.js

setupController(controller,model){
 this._super(...arguments);
}
  model() {
    return this.store.findAll("post");
  },  
  setupController(controller, model){
    controller.set('model', model);
  }
这将给出控制台日志模型,它是post对象的集合

controller.js

 init(){
  console.log(this.model);
 }
我们大多数时候都这样做,尤其是当您使用RSVP承诺时 您选择了控制器上的模型

范例

 model(params) {
    return Ember.RSVP.hash({
      lecture: this.store.findRecord('section', params.section_id).then((section)=>{
        return this.store.createRecord('lecture',{
          section: section
        });
      }),
      section:this.store.findRecord('section', params.section_id),
      course: this.store.query('course',{filter:{section_id:params.section_id}})
    });
  },
  setupController(controller,model){
    controller.set('model', model.lecture);
    controller.set('section', model.section);
    controller.set('course', model.course);

  }
请注意,若路线上只有简单的模型

 model(params) {
        return this.store.findRecord('course', params.course_id);
      }

您不必在控制器上进行任何设置,这也可能为您提供控制器上的型号。

以下是您问题的答案。这是你问题的答案。嗯,我明白你的意思。换句话说就是这样。我所做的没有错,对吧?嗯,我明白你的意思。换句话说就是这样。我所做的不是错的,对吗?
setupController(controller,model){
 this._super(...arguments);
}