我想改变asyncCommand的命中方式(目前来自一个按钮),所以我需要从代码中访问asyncCommand。我不想改变这个asyncCommand正在做的事情,它正在处理付款细节。
我尝试过谷歌搜索,但我找不到任何东西,我也是KO的新手。
这就是我想要实现的目标:
if(flag) - show modal
如果(!标志)
可以这样做吗?
提前感谢您的帮助。
克莱尔
这是我尝试过的: 第一个按钮
model.checkAddress = ko.asyncCommand({
execute: function (complete)
{
makePayment.execute();
if (data.shippingOutOfArea === true || (data.shippingOutOfArea === null && data.billingOutOfArea === true)) {
model.OutOfArea.show(true);
}
complete();
},
canExecute: function (isExecuting) {
return !isExecuting;
}
});
原始按钮
model.makePayment = ko.asyncCommand({
execute: function (complete) {
}})
模态
model.OutOfArea = {
header: ko.observable("Out of area"),
template: "modalOutOfArea",
closeLabel: "Close",
primaryLabel: "Continue",
cancelLabel: "Change Address",
show: ko.observable(false), /* Set to true to show initially */
sending: ko.observable(false),
onClose: function ()
{
model.EditEmailModel.show(false);
},
onAction: function () {
makePayment.execute();
},
onCancel: function ()
{
model.EditEmailModel.show(false);
}
};
答案 0 :(得分:1)
此方案实际上有两个异步命令。一个打开模态,另一个打开模态。
例如:
showPaymentPromptCmd = ko.asyncCommand({
execute: function(complete) {
if (modalRequired) {
showModal();
} else {
makePayement();
}
complete();
},
canExecute: function(isExecuting) {
return !isExecuting;
}
});
//Called by Continue button on your modal.
makePaymentCmd = ko.asyncCommand({
execute: function(complete) {
makePayement();
complete();
},
canExecute: function(isExecuting) {
return !isExecuting;
}
});
var
function makePayement() {
//some logic
}