2013-03-04 2 views
3

У меня есть модель объекта пациентаПочему модель недоступна внутри контроллера, хотя доступна в шаблоне руля?

App.Router.map (function() { 
    this.resource('patients'); 
    this.resource('patient', {path: ':patient_id'}, function(){ 
     this.resource('dashboard', function() { 
      this.route('summary'); 

     }); 

    }); 
}); 




    App.PatientRoute = Ember.Route.extend({ 
      model: function(params) { 
      return App.Patient.find(params.patient_id); 
      }, 
      setupController: function(){ 
       console.log("Menu Items:" + App.PatientMenuItem.find()); 
       this.controllerFor('patient').set('menuItems', App.PatientMenuItem.find()); 

      } 
     }); 


App.DashboardSummaryRoute = Ember.Route.extend({ 
    setupController: function(){ 

     this.controllerFor('dashboard.summary').set('content', this.controllerFor('patient').get('model')); 

     this.controllerFor('dashboard.summary').getPatient(); 
    } 

}); 


App.DashboardSummaryController = Ember.ObjectController.extend({ 

    getPatient:function(){ 
     console.log(this.content.get_allergies); 
    } 
}); 

App.PatientController = Ember.ObjectController.extend({ 
    menuItems:[],  

}); 


<script type="text/x-handlebars" data-template-name="dashboard/summary"> 
Summary{{this.content.get_allergies}} 
</script> 

В выше, я не в состоянии получить доступ к тем же get_allergies в DashboardSummaryController, но я могу получить к нему доступ в рукоятках, Может кто-нибудь помочь мне, что это ошибка?

Заранее спасибо

ответ

3

Я не знаю, если только это решает проблему, но всегда использовать Get() и установить() методы при доступе к свойствам. Поэтому я хотел бы предложить, чтобы попробовать это в методе getPatient():

App.DashboardSummaryController = Ember.ObjectController.extend({ 

    getPatient:function(){ 
     console.log(this.get("content.get_allergies")); 
    } 
}); 

Почему шаблон работы? Выражение Handlebars, которое у вас есть, автоматически переводится в вызов, я предложил ваш метод контроллера.

+0

Большое спасибо .. это сработало :) – Swapnil

+0

Хорошо :-). Затем закройте вопрос, если проблем больше нет. – mavilein

+0

get_allergies это свойство, которое я могу получить доступ сейчас, используя способ вы предложили, но как получить доступ к «hasMany» свойство, как получать индивидуальные аллергий App.DashboardSummaryController = Ember.ObjectController.extend ({ getPatient: функция () { console.log (this.get («content»). Get («allergies»). Get («0»)) console.log (this.get («content.allergies»)) } }); – Swapnil

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