我得到了一个表格,其中包含一个对象列表(常量)。这些是可编辑的。 到目前为止,例如可以直接删除其中的任何一个,而无需确认。 现在,我想通过简单地插入(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);
}
...现在,在单击“删除”之后并在其回调调用的实际删除操作之前,将显示一个启动箱确认。 不幸的是,成功执行操作后,表单没有更新。 怎么会这样?它必须以某种方式连接到回调。 可以手动刷新/更新表单吗?
答案 0 :(得分:0)
问题: 通过回调执行删除操作会丢失上下文。
解决方案:
传递上下文$scope
并在回调中调用$scope.apply()