【问题标题】:Dynamically Add Rows in Knockoutjs在 Knockoutjs 中动态添加行
【发布时间】:2019-11-03 03:02:15
【问题描述】:

我正在使用 knockoutjs,并且我有 2 列 Qualification List 和 Marks 。单击“添加”按钮后,我想生成新行,单击“提交”按钮后,它需要显示所选的资格列表和我的分数。

我这里有代码: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);

当我控制 Qualification 时,它只显示 Marks,但我的预期结果应该是 QualId QualName 和 Marks 在一个数组中。

【问题讨论】:

  • 您必须将 $parent 添加到您的 html 绑定中以进行选择(选项绑定),因为您在 foreach 中,因此您在定位资格列表时使用了错误的范围
  • 你能帮帮我吗?我是淘汰赛js的新手。

标签: c# jquery asp.net knockout.js knockout-3.0


【解决方案1】:

修复您选择的范围。使用$parent 将一个范围从foreach 绑定内的上下文中移出。

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

编辑:澄清。当您在 foreach 绑定中时,您的当前范围是迭代中的当前项。因为您的 QualificationLists 直接在您的视图模型上,而不是实际上在您正在循环的项目上,所以您必须从父上下文中调用它

【讨论】:

  • 别担心,伙计。如果我的回答解决了您的问题,能否将其标记为答案?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-04-07
  • 1970-01-01
  • 1970-01-01
  • 2020-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多