【问题标题】:knockoutjs button click event doesn't fireknockoutjs 按钮单击事件不会触发
【发布时间】:2016-04-25 15:03:35
【问题描述】:

我正在使用从 ajax 返回的数据构建 HTML,当我查看源代码时它看起来不错,但由于某种原因,click 事件没有触发。

这就是我创建标记的方式:

$.ajax({
                    type: "POST",
                    url: "/webservices/WebService.asmx/GetData",
                    contentType: "application/json; charset=utf-8",
                    data: "{'orderId': " + JSON.stringify(order.OrderId) + "}",
                    dataType: "json",
                    success: function (data) {
                        if (data) {
                            if (data.d.length > 1) {
                                $.each(data, function () {
                                    $.each(this, function (k, v) {
                                        var temp2 = "<input type='button' class='btn' data-bind='value: " + v.TeacherId + ", click: $root.downloadImage' />";
                                        $(".downloadButtons").append(temp2);
                                    });
                                });
                                $("#selectOrderPackagePopup").modal("show");
                            }
                        }
                    },
                    error: function (n) {
                        alert('Error');
                    }
                });

然后我可以看到模态弹出窗口中的按钮,这是生成的源:

点击事件是这个:

self.downloadImage = function () {
                if (order) {
                    var url = "DownloadImage.aspx?orderId=" + order.id;
                    window.location = url;
                } 
            };

我无法触发点击事件。

【问题讨论】:

标签: javascript jquery knockout.js knockout-2.0 knockout-3.0


【解决方案1】:

将按钮添加到 DOM 后,您需要调用 ko.applyBindings。将其放在您的 ajax 成功回调中,例如在 $("#selectOrderPackagePopup").modal("show"); 行下方。

【讨论】:

    猜你喜欢
    • 2012-01-19
    • 2012-09-12
    • 2019-06-22
    • 2020-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多