>我有一个页面,我想让用户输入多条记录。例如,假设我有一个页面,用户可以在其中输入任意数量的学生记录,其中每个学生记录都包含姓名、年龄等字段。
目前,我在页面上有一个按钮,用于调用控制器上的方法。
// controller/studentlist.js
actions: {
createStudentRecord() {
let student = this.get('store').createRecord('student', {});
let model = this.get('model') || Ember.A();
model.pushObject(student);
this.set('model', model);
}
}
我最初像这样获取模型:
// routes/studentlist.js
model(params) {
return this.get('store').query('student', { orderBy: 'class_id', equalTo: params.class_id });
}
然后,我迭代模板中的model
,以便在更新模型时,列表也会更新。
// templates/studentlist.hbs
{{#each model}}
// Show list of students
{{else}}
<p>No students.</p>
{{/each}}
但是,当我这样做时,我会internalModel.getRecord is not a function
.
谷歌搜索导致在github上出现这种情况。 https://github.com/emberjs/data/issues/3530,这似乎是我遇到的完全相同的问题。但是,我不太明白我应该做什么才能使这个场景正常工作。有人可以指导我正确实施这一点吗?
我试着做this.set('model', model.toArray())
,但这没有帮助。
哎呀,看来我想得还不够。我只需要以不同的方式获取模型。
// routes/studentlist.js
model(params) {
return this.get('store')
.query('student', { orderBy: 'class_id', equalTo: params.class_id })
.then((students) => { return students.toArray(); });
}