Md-select с несколькими атрибутами не ставит флажки, когда модель представляет собой массив объектов - PullRequest
0 голосов
/ 26 марта 2020

Используя 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-модели

enter image description here

// когда я возвращаю lesson.nextActions в базу данных огня для повторного заполнения ng-модель (ничего не выбрано, это моя проблема!)

enter image description here

// 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 не проверен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...