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>

在上面,我无法在 DashboardSummaryController 中访问相同的 get_allergies,但我可以在车把中访问它,谁能帮助我有什么错误?

提前致谢

4

1 回答 1

3

我不知道仅此一项是否可以解决问题,但在访问 properties 时始终使用 get() 和 set() 方法。所以我建议在你的 getPatient() 方法中试试这个:

App.DashboardSummaryController = Ember.ObjectController.extend({

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

为什么模板有效?您拥有的 Handlebars 表达式会自动转换为调用,我建议您使用控制器方法。

于 2013-03-04T10:49:26.637 回答