Ember对象没有设置linkTo使用ember-model

时间:2013-06-02 05:09:45

标签: ember.js

我的控制器中有一组对象。我可以显示属性但是没有设置linkTo对象

我也使用ember-model而不是ember-data

Msmapp.ClassroomsRoute = Ember.Route.extend({
  model: function() {
    return Msmapp.Classroom.findAll(); //Ember.Model
  }
});


Msmapp.Classroom = Msmapp.Model.extend({
  classroom_id: Ember.attr('number'),
  classroom_name: Ember.attr('string'),
  teacher_id: Ember.attr('number'),
  grade: Ember.attr('number'),
  students: Ember.attr('string'),
  assignments: Ember.attr('string'),

  classroomStudents: function () {
    var studentObjects = []
    this.get('students').forEach(function(student) {
      studentObjects.push(Msmapp.Student.create(student));
    });
    return studentObjects;
  }.property('students')

});

Msmapp.Classroom.reopenClass({
  collectionKey: "classrooms",
  url: '/classrooms'
});


{{#each classroom in controller }}
  <li class="item">
    {{#linkTo 'classroom' classroom }}{{ classroom.classroom_name }}{{/linkTo}}
  </li>
{{/each}}

classroom.classroom_name工作正常。我甚至把它改成了计算属性。

但链接未设置模型。它是一个嵌套的路线。

im getting / classesrooms / undefined

奇怪的是,当我点击链接时,它会填充教室模型和视图。

我的路线

this.resource('classrooms', function() {
    this.resource('classroom', {path: ':classroom_id'}, function() {
        this.route('new_student');
    });
    this.route('new');
});

注意:如果我将:classroom_id更改为just:id我会回复这样的内容

/classrooms/<Msmapp.Classroom:ember403>

我刚从ember-data切换到ember-model,所以我确定它可以忽视它的微不足道的东西。

2 个答案:

答案 0 :(得分:1)

课堂型号的主键是什么? 它看起来像classroom_id而不是id

Ember.Model假定主键为id,它当前正在生成包含教室模型id属性的网址,实际上是undefined,因为您的实际ID为{ {1}}

您需要更改数据以使用classroom_id作为主键(建议),或者自定义Ember-Model以使用其他主键。

答案 1 :(得分:0)

<Msmapp.Classroom:ember403>是模型方法toString()的结果。我有同样的问题,看起来像linkTo没有查看路径参数名称。所以我的解决方案是

{{#linkTo 'classroom' classroom.classroom_id }}...