Knockout.js 数据绑定:点击,在页面加载时运行
Knockout.js data-bind: click, runs on page load
我有一个带有 foreach
绑定的 table。我不想创建一个单击时会触发功能的按钮。相反,函数 运行s 会在页面加载时自动执行。
我试过使用带有 click
绑定的按钮或空 <td>
元素。结果是一样的。
CSHTML
<td>
<button type="button"
class="btn btn-primary"
data-bind="click: QuickReplyToSpecificRequestByManager(@item.Id)"
>Accept</button>
</td>
TS
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();
});
}
};
我希望 运行 仅在单击按钮时才起作用。
当您 applyBindings
时,knockout 会评估其所有绑定字符串。
在 click: QuickReplyToSpecificRequestByManager(@item.Id)
的情况下,它将通过计算 :
右侧的部分来初始化 click
绑定(:
的左侧)。 =19=]
因为 QuickRepl...
是一个函数,它后面跟着 ( ... )
,它被调用了。
要修复它,您可以 bind
注入值而无需调用:
click: QuickReplyToSpecificRequestByManager.bind($data, @item.Id)
我有一个带有 foreach
绑定的 table。我不想创建一个单击时会触发功能的按钮。相反,函数 运行s 会在页面加载时自动执行。
我试过使用带有 click
绑定的按钮或空 <td>
元素。结果是一样的。
CSHTML
<td>
<button type="button"
class="btn btn-primary"
data-bind="click: QuickReplyToSpecificRequestByManager(@item.Id)"
>Accept</button>
</td>
TS
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();
});
}
};
我希望 运行 仅在单击按钮时才起作用。
当您 applyBindings
时,knockout 会评估其所有绑定字符串。
在 click: QuickReplyToSpecificRequestByManager(@item.Id)
的情况下,它将通过计算 :
右侧的部分来初始化 click
绑定(:
的左侧)。 =19=]
因为 QuickRepl...
是一个函数,它后面跟着 ( ... )
,它被调用了。
要修复它,您可以 bind
注入值而无需调用:
click: QuickReplyToSpecificRequestByManager.bind($data, @item.Id)