Knockout js observableArray没有得到更新

Knockout js observableArray is not getting updated

本文关键字:更新 js observableArray Knockout      更新时间:2023-09-26

我试图从响应数据更新可观察数组。我肯定我错过了一些简单的东西,但我不知道为什么它不起作用?

function addWitness() {
  $.post("AddWintess", {
    Witnesses: [{
      LastName: "test1",
      FirstName: "test1",
      MiddleName: "test1"
    }, {
      LastName: "test2",
      FirstName: "test2",
      MiddleName: "test2"
    }]
  }, function(data) {
    my.viewModel.allItems = ko.observableArray(data.Witnesses);
  });
}
var my = {
  viewModel: new WitnessesModel()
}
function WitnessesModel() {
  var self = this;
  self.allItems = ko.observableArray([]);
  self.test = ko.computed(function() {
    var result = "";
    self.allItems().forEach(function(item) {
      result += item + "; ";
    });
  });
}
ko.applyBindings(my.viewModel);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
<ul data-bind="foreach: allItems">
  <li data-bind="text: FirstName"></li>
</ul>
<input type="button" class="btn btn-success" value="+" onclick="addWitness()" />

我在测试函数中设置了断点,但是它没有被触发。

试试这行my.viewModel.allItems(data.Witnesses);代替

my.viewModel.allItems = ko.observableArray(data.Witnesses);