Используя firebase и angularjs материал, я успешно сохраняю в своей базе данных значение ng-модели md-select с несколькими атрибутами, но может показаться, что он успешно отображает результаты базы данных обратно в тот же md-select.
// controller. js
$scope.lessons = _.map(lessons, function(thisLesson, key){
return {
id: key,
name: thisLesson.name,
type: 'lesson'
};
});
$scope.assignments = _.map(assignments, function(thisAssignment, key){
return {
id: key,
name: thisAssignment.name,
type: 'assignment'
};
});
$scope.assessments = _.map(assessments, function(thisAssessment, key){
return {
id: key,
name: thisAssessment.name,
type: 'assessment'
};
});
// view. html (Должен заметить, что я должен был установить значения ng как таковые, потому что firebase не позволяет сохранить что-либо в базе данных, если ключ содержит «$». Когда я, например, устанавливаю значение ng для extLesson, добавляется свойство $$ mdSelectId, поэтому я воссоздаю значение объекта в шаблоне)
<md-input-container>
<label>Select</label>
<md-select ng-model="lesson.nextActions" multiple>
<md-optgroup label="Lessons">
<md-option ng-value="{ id: extLesson.id, name: extLesson.name, type: extLesson.type} " ng-disabled='extLesson.id === lessonId' ng-repeat="extLesson in lessons | orderBy: 'name'" ng-model-options="{ trackBy: 'extLesson.name'}">{{extLesson.name}} (lesson)</md-option>
</md-optgroup>
<md-optgroup label="Assignments">
<md-option ng-value="{ id: extAssignment.id, name: extAssignment.name, type: extAssignment.type} " ng-repeat="extAssignment in assignments | orderBy: 'name'" ng-model-options="{ trackBy: 'extAssignment.name'}">{{extAssignment.name}} (assignment)</md-option>
</md-optgroup>
<md-optgroup label="Assessments">
<md-option ng-value="{ id: extAssessment.id, name: extAssessment.name, type: extAssessment.type} " ng-repeat="extAssessment in assessments | orderBy: 'name'" ng-model-options="{ trackBy: 'extAssessment.name'}">{{extAssessment.name}} (assessment)</md-option>
</md-optgroup>
</md-select>
</md-input-container>
// lesson.nextActions успешно сохранены из ng-модели
// когда я возвращаю lesson.nextActions в базу данных огня для повторного заполнения ng-модель (ничего не выбрано, это моя проблема!)
// logon lesson.nextActions после перезагрузки приложения и извлечения из базы данных
console.log(lesson.Actions);
// [
// 0: {id: "-LHNgPBOUmwhE6Vudh9B", name: "Addition", type: "assignment", $$mdSelectId: 1}
// 1: {id: "-Li9rSvhXBFhWA7gDy4-", name: "Bone #1", type: "assessment", $$mdSelectId: 2}
// ]
Я вижу, что собственность $$mdSelectId
была добавлен к lesson.nextActions
, поэтому я предполагаю, что он добавляется, когда он переваривается из md-select ng-модели. Проблема в том, что ни один из флажков в md-select не проверен.