Временно добавьте данные текстовых полей в сетку, используя knockout.js - PullRequest
0 голосов
/ 25 сентября 2018

HTML-код

<label class="control-label">Contact Person</label>
<input class="form-control" type="text" placeholder="Enter Contact name" data-bind="value: ContactPerson" data-validate='{"required":"true"}'><br />

<label class="control-label">ContactNo</label>
<input class="form-control" type="tel" data-bind="value: ContactNo" placeholder="ContactNo" data-validate='{"required":"true"}'><br />

<label class="control-label">E-Mail</label>
<input class="form-control" type="email" data-bind="value: Email" placeholder="Email" data-validate='{"required":"true","email":"true"}'><br />

<table class="table table-hover table-bordered" id="listTable">
     <thead>
          <tr>
               <th>ContactPerson</th>
               <th>ContactNo</th>
               <th>Email</th>
               <th></th>
          </tr>
     </thead>
     <tbody data-bind="template:{name: 'Process-list', 
                                foreach: rootViewModel.BodyContent.ProcessList }">
     </tbody>
</table>

, когда я нажимаю кнопку добавления, данные в трех текстовом поле должны привязываться к сетке, а когда я нажимаю кнопку удаления строки в сетке, она должна исчезнуть, для этого мне нужноviewmodel.

Спасибо

1 Ответ

0 голосов
/ 25 сентября 2018

Вот модель быстрого просмотра, которая соответствует требованиям.Я выбрал ContactNo в качестве первичного ключа, поскольку они должны быть уникальными.Вместо этого вы можете использовать идентификаторы, если это необходимо.Также было бы неплохо запустить проверку перед вызовом метода add.

var viewModel = function(){
  var self = this;
  self.ContactPerson = ko.observable();
  self.ContactNo = ko.observable();
  self.Email = ko.observable();
  self.ProcessList = ko.observableArray();
  self.add = function(){
    self.ProcessList.push({
      ContactPerson: self.ContactPerson(),
      ContactNo: self.ContactNo(),
      Email: self.Email(),
    });
    self.ContactPerson('');
    self.ContactNo('');
    self.Email('');
  };
  self.delete = function(data, event){
    self.ProcessList.remove(function(listObject){
      return listObject.ContactNo === data.ContactNo;
    });
  };
};

ko.applyBindings(new viewModel());
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>
<label class="control-label">Contact Person</label>
<input class="form-control" type="text" placeholder="Enter Contact name" data-bind="value: ContactPerson" data-validate='{"required":"true"}'><br />

<label class="control-label">ContactNo</label>
<input class="form-control" type="tel" data-bind="value: ContactNo" placeholder="ContactNo" data-validate='{"required":"true"}'><br />

<label class="control-label">E-Mail</label>
<input class="form-control" type="email" data-bind="value: Email" placeholder="Email" data-validate='{"required":"true","email":"true"}'><br />


<button data-bind="click: add">Add Data</button>
<table class="table table-hover table-bordered" id="listTable">
     <thead>
          <tr>
               <th>ContactPerson</th>
               <th>ContactNo</th>
               <th>Email</th>
               <th></th>
          </tr>
     </thead>
     <tbody data-bind="template:{name: 'Process-list', 
                                foreach: ProcessList }">
          </tbody>
     </tbody>
</table>

<script type="text/html" id="Process-list">
  <tr>  
    <td data-bind="text: ContactPerson"></td>
    <td data-bind="text: ContactNo"></td>
    <td data-bind="text: Email"></td>
    <td><button data-bind="click: $root.delete">Delete</button></td>
  </tr>
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...