gpt4 book ai didi

knockout.js - knockout - 在呈现最后一项后执行代码

转载 作者:行者123 更新时间:2023-12-04 11:08:34 27 4
gpt4 key购买 nike

我正在使用 jquery quicksearch 来搜索由 knockout foreach 循环填充的表。
需要启动快速搜索元素 foreach 结束后 .
我尝试了几种方法,但到目前为止都没有成功。

我尝试使用“afterRender”,但无法确定当前项目是否是集合中的最后一个项目,
我也尝试过使用 bindingHandlers,但后来我得到了一个长度为 0 而不是长度为 2005 的集合。

所以:

  • 在 foreach 循环中找到最后一个元素的最佳方法是什么?
  • 在这种特定情况下实现它的最佳方法是什么?

  • 这是我的看法:
        <tbody data-bind="foreach: containers">
    <tr>
    <td><span data-bind="text: code"></span></td>
    <td><span data-bind="text: typeName"></span></td>
    <td><span data-bind="text: parentClient"></span></td>
    <td><span data-bind="text: client"></span></td>
    <td>
    <a data-bind="attr: { onclick: deleteUrl }">
    <i class="icon-trash"></i>@delete </a>
    |
    <a data-bind="attr: { href: editUrl }">
    <i class="icon-edit"></i>@edit</a>
    |
    <a data-bind="attr: { href: qrUrl }" target="blank">
    <i class="icon-qrcode"></i>
    @printQr
    </a>
    </td>

    </tr>
    </tbody>

    这是我的 knockout 代码:
    function Container(data) {
    var self = this;
    self.id = ko.observable(data.Id);
    self.code = ko.observable(data.Code);
    self.typeName = ko.observable(data.TypeName);
    self.parentClient = ko.observable(data.ParentClient);
    self.client = ko.observable(data.Client);
    self.deleteUrl = ko.computed(function () {
    return "GetModal('/Containers/Delete/" + data.Id + "','containerModal');";
    });
    self.editUrl = ko.computed(function () {
    return '/Containers/Edit/' + data.Id;
    });

    self.qrUrl = ko.computed(function () {
    return '/Qr/Index/10?entity=' + data.Id;
    });
    }
    function ContainersViewModel() {
    var self = this;
    self.containers = ko.observableArray([]);
    self.counter = ko.computed(function () {
    return self.containers().length;
    });

    $.getJSON("/Containers/Json", function (data) {
    var containers = $.map(data, function (item) {
    return new Container(item);
    });

    self.containers(containers);
    });

    };
    ko.applyBindings(new ContainersViewModel());

    非常感谢 !

    尼尔

    最佳答案

    迟到的附录,但上面里卡多回答中的 if 语句应该是:

    if (this.foreach()[this.foreach().length - 1] === data) {
    //Your post processing logic
    }

    因为 foreach 是一个函数。很可能是为什么 Nir ​​Weiner 对它的评估有问题。

    关于knockout.js - knockout - 在呈现最后一项后执行代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16385679/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com