javascript - addOnStageChange() 调用了两次

标签 javascript dynamics-crm dynamics-365

我在 Opportunity Entity 中编写了一个关于 BPF 阶段更改的事件处理程序:

var checkForAccountApproved = function (executionContext) {
    var formContext = executionContext.getFormContext();
   formContext.data.process.addOnStageChange(function (stageContext) {

        var stageName = stageContext.getEventArgs().getStage().getName().toString();
        if (some conditions) {
            formContext.data.process.movePrevious();

        }
        else {
            currentActiveStage.setValue(stageName);
            formContext.data.entity.save();
        }

    });
};

基本上,在单击下一步时,我需要检查是否不满足某些条件,那么只有下一阶段应该处于事件状态,否则,当前阶段应该处于事件状态。

如果不满足条件,即发生阶段变化​​,我会将当前事件阶段的值存储在一个字段中。如果我明确调用保存,事件处理程序将再次触发。

为什么会这样?

最佳答案

可能是一个迟到的答案,但是...... 不要使用 formContext.data.process.movePrevious() 来取消您的阶段更改,因为这将尝试将阶段移回并重新执行您的前期更改(这可能会一直循环直到您回到第一个stage).. 而是使用下面的取消阶段更改并停留在当前阶段

executionContext.getEventArgs().preventDefault();

关于javascript - addOnStageChange() 调用了两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52477325/

相关文章:

javascript - Angular - 如果表单 block 处于焦点状态,则显示输入

javascript - Opera Mini Jquery AJAX 未加载

azure - 微软动力 : Generate Refresh Token for OAuth

javascript - 使用javascript或原型(prototype)通过多个属性选择html元素

javascript - 通过图像标签加载 SVG 并能够在不使用 AJAX 获取内联 SVG 的情况下更改它的颜色?

asp.net-web-api - CRM Web api 与过滤器一起扩展 - 内连接还是左连接?

javascript - 如何使用保存和路由按钮 Dynamics 365?

c# - 命名空间 '<global namespace>' 已经包含了 'Workflow' 的定义

dynamics-crm - 查询 Dynamics 365 XRM Tooling SDK 中已删除的实体

azure - PowerShell任务Azure DevOps版本的脚本路径