我的测验装置有一个名为questions的属性,这是一组相关问题的ID。我想在名为firstQ的模型上创建一个计算属性,该属性返回questions数组中的第一个id。最终我想把这个id用来链接到我创建的问题路径。
我无法弄清楚,如何访问问题数组中的第一个id。这是解决这个问题的最佳方法吗?请帮忙。
App.ApplicationAdapter = DS.FixtureAdapter.extend();
App.Quiz = DS.Model.extend({
name: DS.attr('string'),
description: DS.attr('string'),
questions: DS.hasMany('question', {async: true}),
firstQ: function() {
return this.get('questions')//where to go next?, on right track?;
}.property()
});
App.Question = DS.Model.extend({
question: DS.attr('string'),
quiz: DS.belongsTo('quiz', {async: true}),
answers: DS.attr('string')
});
//fixtures
App.Quiz.FIXTURES = [
{
id: 1,
name: 'The JavaScript Quiz',
description: 'take this quiz and find out if you\'re a super genious',
questions: [100,101]
}
];
App.Question.FIXTURES = [
{
id:100,
question: 'Inside which HTML element do we put the JavaScript',
quiz: 1,
answers: [
{ answer: 'alpha', weight: 0 },
{ answer: 'beta', weight: 5 }
]
}
]
答案 0 :(得分:1)
好的,所以我想出了如何通过模型上的计算属性来做到这一点。这是App.Quiz模型的更新代码:
App.Quiz = DS.Model.extend({
name: DS.attr('string'),
description: DS.attr('string'),
questions: DS.hasMany('question', {async: true}),
firstQuestion: function() {
return this.get('questions.firstObject');
}.property('questions.firstObject')
});
答案 1 :(得分:0)
您可以使用Ember Arrays的firstObject属性在firstQ
和questions
数组中的第一个Id之间创建绑定。将您的firstQ
属性定义为此类绑定
App.Quiz = DS.Model.extend({
name: DS.attr('string'),
description: DS.attr('string'),
questions: DS.hasMany('question', {async: true}),
firstQBinding: 'questions.firstObject'
});