Я пытаюсь отфильтровать содержимое поля hasMany в ember-data. Моя модель имеет некоторые подвопросы, которые я хочу, чтобы просочиться в свойство «childOptions» на мой контроллер и дисплей в шаблоне с помощьюEmber.js вычисленный фильтр свойств hasMany array
{{#each childOptions}}stuff{{/each}}
Когда я положил это на мой контроллер, он работает, и каждый перебирает соответствующие значения :
childOptions: Ember.computed.filterBy('model.subquestions', 'surveyQuestionType.name', 'childOption'),
Однако, когда я это делаю, ничего не отображается.
childOptions: Ember.computed.filter('model.subquestions', function(subquestion) {
return subquestion.get('surveyQuestionType.name') === 'childOption';
}),
«surveyQuestionType» является DS.belongsTo, которая существует на модели «подвопросы», и он имеет свойство «имя».
Я хочу понять, почему работает метод filterBy, в то время как метод «фильтр» (так что я могу использовать «фильтр» для более сложных запросов в будущем). Я думаю, что это имеет какое-то отношение к обещаниям и синтаксис subquestion.get('property')
, который я использую внутри функции фильтра.
EDIT:
Это модель:
App.SurveyQuestion = DS.Model.extend(Ember.Validations.Mixin, {
surveyQuestionType: DS.belongsTo('surveyQuestionType', { async: true }),
display: DS.belongsTo('surveyQuestionDisplay', { async: true, inverse: 'surveyQuestion' }),
sortOrder: DS.attr('number'),
parent: DS.belongsTo('surveyQuestion', { async: true, inverse: 'subquestions' }),
parentDependencyCriteria: DS.attr('string'),
required: DS.attr('boolean'),
surveySections: DS.hasMany('surveySectionQuestion', { async: true, inverse: 'surveyQuestion' }),
subquestions: DS.hasMany('surveyQuestion', { async: true, inverse: 'parent' })
});
'subquestion.get ('surveyQuestionType.name')' возвращает 'undefined', что я уверен, проблема, но я не знаю, как это исправить! Если в моем шаблоне я делаю простой '{{#each subquestions}} {{surveyQuestionType.name}} {{/ each}}', я вижу, что свойство просто отлично. – leejt489