Asynchronous Knockout asyncCommand-从方法命中

Asynchronous Knockout asyncCommand-从方法命中,asynchronous,knockout.js,Asynchronous,Knockout.js,我想改变asyncCommand被点击的方式(当前是通过按钮),因此我需要从代码中访问asyncCommand。我不想改变asyncCommand的功能,它处理的是付款细节 我尝试过谷歌搜索,但我什么也找不到,我对KO也是新手 这就是我想要实现的目标: 单击按钮(一个单独的按钮,具有自己的asyncCommand方法 “执行”将执行以下操作: 如果(标志)-显示模式 modal有两个选项-继续/取消 如果继续-点击原始按钮的asyncCommand(卡付款一) 如果取消-返回表单 如果(

我想改变asyncCommand被点击的方式(当前是通过按钮),因此我需要从代码中访问asyncCommand。我不想改变asyncCommand的功能,它处理的是付款细节

我尝试过谷歌搜索,但我什么也找不到,我对KO也是新手

这就是我想要实现的目标:

  • 单击按钮(一个单独的按钮,具有自己的asyncCommand方法 “执行”将执行以下操作:
如果(标志)-显示模式

  • modal有两个选项-继续/取消
  • 如果继续-点击原始按钮的asyncCommand(卡付款一)
  • 如果取消-返回表单
如果(!标志)

  • 点击原始按钮的asyncCommand(卡付款一)
这能做到吗

提前感谢您的帮助

克莱尔

这就是我尝试过的: 第一个按钮

   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) {
}})
模态


在这个场景中,实际上有两个异步命令。一个打开模态,另一个打开模态

例如:

showPaymentPromptCmd=ko.asyncCommand({
执行:功能(完成){
如果需要(modalRequired){
showModal();
}否则{
支付();
}
完全();
},
canExecute:函数(isExecuting){
返回!我正在执行;
}
});
//通过模式面板上的“继续”按钮调用。
makePaymentCmd=ko.asyncCommand({
执行:功能(完成){
支付();
完全();
},
canExecute:函数(isExecuting){
返回!我正在执行;
}
});
变量
函数makepayment(){
//一些逻辑
}
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);
    }
};