Функция удаления Knockout на наблюдаемом массиве не работает - PullRequest
0 голосов
/ 17 декабря 2018

В моем приложении нокаута я пытаюсь удалить элемент, используя метод remove.Но я получаю сообщение об ошибке

. Удалить это не функция

Ниже приведен код

ActivityArray = ko.observable([]);
ActivityArray(result.Regular); //Result of an api call    
ActivityArray.remove(function (element) { return element.Name === 'abc'; })

Не в состоянии понять, почему это не работает.Я использовал remove в других местах и ​​в любом другом месте, он работает нормально.

Пожалуйста, руководство

Спасибо

Ответы [ 2 ]

0 голосов
/ 17 декабря 2018

Вы должны использовать observableArray (https://knockoutjs.com/documentation/observableArrays.html),, а не observable.

var viewmodel = function(){
  var self = this;
  var ActivityArray = ko.observableArray([]);
  var result = {
    "Regular":[
      {"Name": "abc"},
      {"Name": "xyz"}
    ]
  };
  ActivityArray(result.Regular); //Result of an api call
  console.log("Before remove: ", ActivityArray());
  ActivityArray.remove(function (element) { return element.Name === 'abc'; });
  console.log("After remove: ", ActivityArray());

};

ko.applyBindings(new viewmodel());
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>
0 голосов
/ 17 декабря 2018
Функция

.remove доступна только для observableArray.Но вы устанавливаете ActivityArray как observable.Измените его на observableArray

ActivityArray = ko.observableArray([]);
...