2017-01-23 3 views
0

Мне было интересно, какой правильный способ получить доступ к модели от контроллера ?Каков правильный способ доступа к модели с контроллера в Ember

Я заметил, что в инициализации контроллера модель по-прежнему нулевой

# controller.js

init(){ 
    console.log(this.model); // IS NULL 
} 

Но метод setupController имеет населенную модель. Поэтому в настоящее время я вызываю метод контроллера из setupController и прохождение модели там. Это прекрасно?

Я думал, что в контроллере будет метод обратного вызова, который будет автоматически вызываться при настройке контроллера.

+0

Вот ответ на ваш вопрос. http://stackoverflow.com/questions/27332840/how-to-access-ember-model-in-oninit-in-object-controller –

ответ

2

route.js

model() { 
    return this.store.findAll("post"); 
    }, 
    setupController(controller, model){ 
    controller.set('model', model); 
    } 

Это даст модель журнала консоли, которая является сбор почтового объекта.

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); 
     } 

и у Вас нет делать какие-либо настройки на контроллер, который можно это также даст вам модель на контроллере.

+1

Хммм. Я понимаю что ты имеешь ввиду. Другими словами. Что я делаю, это неправильно? –

+0

Если вы сделали одну из этих вещей, вы не ошибаетесь. –

+0

Звучит неплохо. –

1

setupController метод крюка будет устанавливать модель как свойство контроллера.

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

Вы можете получить модель, как и обычные другие свойства контроллера. this.get('model')

Смежные вопросы