敲除模型绑定在创建新模型时未清除



我正在引导模式中创建敲除模型。最初,该模型是由正确创建并绑定到模板的,但是在关闭和重新打开模态时,我最终会在模板中使用多个项目。该模型似乎并未使用多个模态((调用。我已经在下面的相同问题上分解了我的现实世界示例。

由于我的真实世界代码,我称为ko.cleannode((以清除绑定,因为没有它,所以我得到了"您不能多次将绑定应用于同一元素"。错误。但这似乎没有清洁节点。我在Codepen上有一个示例:-https://codepen.io/asteropesystems/pen/lkeyon

html

<div id="openModal" class="btn btn-primary">Open modal</div>
<!-- Modal -->
<div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
  <div class="modal-dialog" role="document">
   <div class="modal-content">
    <div class="modal-header">
     <h5 class="modal-title" id="exampleModalLabel">Modal title</h5>
     <button type="button" class="close" data-dismiss="modal" aria-label="Close">
      <span aria-hidden="true">&times;</span>
     </button>
    </div>
   <div class="modal-body">
    <div data-bind="foreach: persons">
     <div data-bind="text: $data"> </div>
    </div>
   </div>
   <div class="modal-footer">
    <div class="btn btn-secondary" id="cancel">Cancel</div>
   </div>
  </div>
 </div>
</div>

javascript

var TestModel = function () {
  var self = this;
  self.persons = ko.observableArray();
  for (var m = 0; m < 5; m++) {
    self.persons.push('TEST ' + m);
  }
  return this;
};
$('#openModal').click(function() {
  var model = new TestModel();
  ko.cleanNode(document.getElementById('exampleModal'));
  ko.applyBindings(model, document.getElementById('exampleModal'));
  $('#exampleModal').modal('show');
});
$('#cancel').click(function () {
  $('#exampleModal').modal('hide');
});

我希望该模型重置和结果中显示的项目数量。

我认为您应该在关闭模态对话框后保持绑定,仅更改"人"的内容。

var TestModel = function ()  {
  let self = this;
  self.persons = ko.observableArray([]);
};
var model = new TestModel();
ko.applyBindings(model, document.getElementById('exampleModal'));
$('#openModal').click(function() {
  model.persons([]);
  for (var m = 0; m < 5; m++) {
    model.persons.push('TEST ' + m);
  }
  $('#exampleModal').modal('show');
});
$('#cancel').click(function () {
  $('#exampleModal').modal('hide');
});

最新更新