javascript - 在表中使用 knockoutjs foreach 控件显示有限行

标签 javascript html knockout.js

我在 View 模型中有一个名为 results 的对象,我只是使用 foreach 循环在 View 文件中显示这些行。

<table>
                    <thead>
                        <tr>
                            <th >Id</th>
                            <th >Name</th>
                        </tr>
                    </thead>
                    <tbody data-bind="foreach: result">
                        <tr>
                            <td data-bind="text: Nr"></td>
                            <td data-bind="text: Name"></td>
                        </tr>
                    </tbody>
</table>

我的结果对象大约有 300 行,但我想仅显示前 10 行,然后添加一个链接以加载更多行。

您能告诉我如何实现这一目标吗? 我不希望使用 knockoutJS gridview 。

谢谢

最佳答案

您的 foreach 应该绑定(bind)到一个计算函数,该计算函数返回您想要显示的行切片。您需要一个 observable 来存储有多少行,以及一个函数来增加行数。

function obj(nr, name) {
  return {
    Nr: nr,
    Name: name
  };
}

vm = {
  howmany: ko.observable(3),
  showMore: function() {
    vm.howmany(vm.howmany() + 3);
  },
  result: [
    obj(1, 'one'),
    obj(2, 'two'),
    obj(3, 'three'),
    obj(4, 'four'),
    obj(5, 'five'),
    obj(6, 'six'),
    obj(7, 'seven'),
    obj(8, 'eight'),
    obj(9, 'nine'),
    obj(10, 'one')
  ],
  sliced: ko.pureComputed(function () {
    return vm.result.slice(0, vm.howmany());
  })
};

ko.applyBindings(vm);
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
<table>
  <thead>
    <tr>
      <th>Id</th>
      <th>Name</th>
    </tr>
  </thead>
  <tbody data-bind="foreach: sliced">
    <tr>
      <td data-bind="text: Nr"></td>
      <td data-bind="text: Name"></td>
      <td data-bind="text: Date.now()"></td>
    </tr>
  </tbody>
</table>
<button data-bind="click: showMore">Show More</button>

关于javascript - 在表中使用 knockoutjs foreach 控件显示有限行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35459209/

相关文章:

javascript - Fabricjs自定义类边框和背景

javascript - 将 Javascript keyCode 转换为非美国键盘布局的 charCode(即 azerty)

javascript - 在 li 项列表中按类名获取元素文本/值

javascript - Phonegap InAppBrowser 显示 pdf 2.7.0

javascript - knockout.js 与 MVC 5 上的 kendo UI MultiSelect

javascript - 在 KnockoutJS 中销毁元素后获取属性的长度

javascript - 如何通过页面/ View 上的 javascript 遍历 ViewData 中的对象?

javascript - 有没有一种方法可以根据 height-Javascript 计算一个 div 元素可以占用的字符数

jquery - 在页面中显示的 Html 和 jquery 对话框问题

knockout.js - KnockoutJS - 如何消除点击次数?