在回调中操作后表单未更新

时间:2018-12-07 11:05:23

标签: angularjs typescript

我得到了一个表格,其中包含一个对象列表(常量)。这些是可编辑的。 到目前为止,例如可以直接删除其中的任何一个,而无需确认。 现在,我想通过简单地插入(ng)bootbox确认步骤来更改它。

在我的.ts文件中执行删除操作的实际代码:

   public DeleteMyObjcet(constantName: string): void {

               DeleteConstant(constantName);
               this.ConstantsNavigationForm.$setDirty();

            }

视图

<ng-form name="Vm.SoftSensorDialogComponent().ConstantsForm">
    <ng-form class="st-table-container" name="Vm.SoftSensorDialogComponent().ConstantsNavigationForm">

        <button type='button' "
                ng-click="Vm.SoftSensorDialogComponent().SoftSensorDialogConstants.DeleteSoftSensorConstant(dataItem.Name)"></button>

    </ng-form>

</ng-form>

现在可以正常工作:删除任何对象,即可立即更新视图(窗体)。

现在我在.ts文件中添加了其他步骤:

public Request_DeleteConstant(constantName: string) {

            let options = {
                message: "<h4>Are you sure you want to delete :" + constantName + " ?</h4>",
                buttons: {
                    cancel: {
                        label: "CANCEL",
                        className: ""
                    },
                    confirm: {
                        label: "OK",
                        className: "",
                        callback: () => {
                            this.DeleteConstant(constantName);
                        }
                    }
                }
            };

            this.softSensorDialog.$ngBootbox.customDialog(options);
        }

...现在,在单击“删除”之后并在其回调调用的实际删除操作之前,将显示一个启动箱确认。 不幸的是,成功执行操作后,表单没有更新。 怎么会这样?它必须以某种方式连接到回调。 可以手动刷新/更新表单吗?

1 个答案:

答案 0 :(得分:0)

问题: 通过回调执行删除操作会丢失上下文。

解决方案: 传递上下文$scope并在回调中调用$scope.apply()