javascript 如何在Knockout.js中编写排序和反转函数?

d4so4syb  于 2023-04-10  发布在  Java
关注(0)|答案(2)|浏览(125)

这是我使用KnockoutJS编写的代码:

var viewModel = function () {
  var self = this;

  self.items = ko.observableArray([
    { name: "Item 1", value: 1 },
    { name: "Item 2", value: 2 },
    { name: "Item 3", value: 3 },
  ]);

  self.addItem = function () {
    self.items.push({ name: "New Item", value: self.items().length + 1 });
  };

  self.removeItem = function (item) {
    self.items.remove(item);
  };

  self.sortItems = function () {
    self.items.sort(function (a, b) {
      return b.value - a.value;
    });
  };

  self.reverseItems = function () {
    self.items.reverse();
  };
};

ko.applyBindings(new viewModel());

我想在knockoutJS中为数组排序和反向方法,我做了这些,但它们不工作,我不知道为什么没有操作!!!

lhcgjxsq

lhcgjxsq1#

这个例子中的错误是,如果你尝试对items数组进行排序或反转,HTML中的数据绑定将不会更新以反映项目的新顺序。这是因为sortItems()和reverseItems()函数在进行更改后不会调用项目observableArray上的valueHasMutated()方法。
要修复此错误,可以添加self.items.valueHasMutated();在sortItems()和reverseItems()函数的末尾。

x4shl7ld

x4shl7ld2#

我不认为公认的答案是正确的。sortreverse都是built-in,并且不需要您调用valueHasMutated才能工作,正如您可以看到的here。您的代码中一定有一些我们没有看到的其他问题。

相关问题