Динамически добавлять строки в Knockoutjs - PullRequest
0 голосов
/ 20 июня 2019

Я использую knockoutjs, и у меня есть 2 столбца квалификационного списка и оценки. После нажатия кнопки «Добавить» я хочу создать новые строки, а после нажатия кнопки «Отправить» необходимо показать выбранный квалификационный список и мои оценки.

У меня есть код здесь: https://jsfiddle.net/wg3t172b/

self.QualificationLists = ko.observableArray([
      { QualName: 'Master', QualId: '0' },
      { QualName: 'Bachelor', QualId: '1' },
      { QualName: 'CA', QualId: '2' },
      { QualName: 'School Leaving', QualId: '3' }
  ]);
  self.addQualification = function () {
      self.Qualifications.push({
         QualList: "",
         QualificationLists: "",
         Marks: "",
         selectedQualName: "",
    });
  };

  self.removeQual = function (Qualification) {
     self.Qualifications.remove(Qualification);
 };

  self.save = function (form) {
     console.log(self.Qualifications());
  };
};

var viewModel = new QualificationModel();
ko.applyBindings(viewModel);

когда я консоль квалификации, он показывает только метки, но мой ожидаемый результат должен быть QualId QualName и метки в одном массиве.

1 Ответ

0 голосов
/ 20 июня 2019

Чтобы исправить область для вашего выбора.Используйте $parent, чтобы переместить одну область из контекста внутри вашей привязки foreach.

<select data-bind="options: $parent.QualificationLists, optionsText:'QualName',

Редактировать: Чтобы уточнить.Когда вы находитесь внутри привязки foreach, ваша текущая область является текущим элементом в итерации.Поскольку ваш QualificationLists находится непосредственно в вашей модели представления, а не на элементах, над которыми вы работаете в цикле, вы должны вызывать его из родительского контекста

...