Knockout.js数据绑定:单击,在页面加载时运行

sqyvllje  于 2022-11-10  发布在  其他
关注(0)|答案(1)|浏览(135)

我有一个foreach绑定的表。我不想创建一个按钮,当点击它时会触发一个函数。相反,这个函数会在页面加载时自动运行。
我试过在click绑定中使用一个按钮或者空的<td>元素,结果都是一样的。
中文HTML

<td>

  <button type="button" 
          class="btn btn-primary" 
          data-bind="click: QuickReplyToSpecificRequestByManager(@item.Id)"
  >Accept</button>

</td>

技术支持

public QuickReplyToSpecificRequestByManager(obs) {

    var data = {
        idToPass: obs,
        Description: "Approved",
        Status: 3
    };
    if (data.idToPass == undefined) {
        console.log("Id missing");
    } else {

        console.log(obs);
        $.post("/Request/SubmitReplyRequestDetails", data)
            .done(function () {
                console.log("Success");
                window.location.reload();
            });
    }
};

我希望只有当我单击按钮时才运行函数。

b4lqfgs4

b4lqfgs41#

当您applyBindings时,knockout会评估它所有的系结字串。
对于click: QuickReplyToSpecificRequestByManager(@item.Id),它将通过计算:右侧的部分来初始化click绑定(:左侧)。
因为QuickRepl...是一个函数,它后面跟着( ... ),所以它被调用了。
若要修正这个问题,您可以bind插入的值,而不呼叫:

click: QuickReplyToSpecificRequestByManager.bind($data, @item.Id)

相关问题