这是我用KnokoutJS编写的代码:

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());

我想为KackoutJS中的数组做排序和反转方法,我做了这些,但它们不起作用,我不知道为什么没有运算!

推荐答案

本例中的错误在于,如果您try 对Items数组进行排序或反转,则HTML中的数据绑定将不会更新以反映项目的新顺序. 这是因为在进行更改后,sortItems()和ReverseItems()函数不会对Items servableArray调用valueHasMutated()方法.

要修复此错误,可以在sortItems()和ReverseItems()函数的末尾添加self.items.valueHasMutated();.

Javascript相关问答推荐

禁用从vue.js 2中的循环创建的表的最后td的按钮

我不知道为什么我的JavaScript没有验证我的表单

vscode扩展-webView Panel按钮不起任何作用

我应该绑定不影响状态的函数吗?'

点击按钮一次有文本出现和褪色,而不是点击两次?(html,CSS,JavaScript)

如何在JavaScript文件中使用Json文件

VUE 3捕获错误并呈现另一个组件

如何迭代叔父元素的子HTML元素

在不删除代码的情况下禁用Java弹出功能WordPress

将对象推送到数组会导致复制

如何访问此数组中的值?

将基元传递给THEN处理程序

JavaScript:如果字符串不是A或B,则

用于部分字符串的JavaScript数组搜索

在Java脚本中构建接口的对象

固定动态、self 调整的优先级队列

如何在加载页面时使锚定标记成为焦点

检测带有委托的元素内部的点击,以及元素何时按其类名被选中

已在EventListener中更新/更改异步的React.js状态对象,但不会导致组件重新呈现

鼠标进入,每秒将图像大小减小5%