Передача/извлечение значений из диалогового окна dojo

#javascript #filenet-p8

#язык JavaScript #файловая сеть-p8

Вопрос:

Я пытаюсь написать пользовательский диалог, который создается с помощью адаптера сценариев в IBM Case Manager 5.3.0 . Это код для адаптера скрипта

 define([ 'dojo/_base/declare', 'dojo/_base/lang', 'icm/base/Constants', 'icm/model/properties/controller/ControllerManager', 'eu/europa/ec/cmr/dialog/ExtendDeadlineDialog' ], function ( declare, lang, Constants, ControllerManager, ExtendDeadlineDialog ) { var SingletonClass = declare('eu.europa.ec.cmr.scriptAdapters.ExtendDeadline', [], {   WK_ITEM_RESPONSE_EXTEND_DEADLINE: "Extend Deadline",  end : false,   execute: async function (payload) {   let workItemEditable = payload.workItemEditable;  let coordination = payload.coordination;  let self = this;   let controllerManager = ControllerManager.bind(workItemEditable);  let currentDeadlineDate = controllerManager.getPropertyController("F_CaseTask", "PT_DeadlineDate").get("value");  ControllerManager.unbind(workItemEditable);    coordination.participate(Constants.CoordTopic.VALIDATE, async function (context, complete, abort) {   if (context[Constants.CoordContext.WKITEMRESPONSE] === self.WK_ITEM_RESPONSE_EXTEND_DEADLINE) {   let extendDeadlineDialog = new ExtendDeadlineDialog(currentDeadlineDate,lang.clone(workItemEditable));  extendDeadlineDialog.exexute = self.callback.bind(self);  extendDeadlineDialog.show();  while (self.end === false) {  await self.sleep(3000);  }  console.log("Completing");  this.end = false;  complete();  }  });  },   callback : function () {  this.end = true;  console.log("Hello World");  },  sleep: function (ms) {  return new Promise(  resolve =gt; setTimeout(resolve, ms)  ); } });  if (!_instance) {  var _instance = new SingletonClass(); }  return _instance; });  

Это стандартный адаптер сценариев, который создает пользовательский диалог внутри функции coordination.participate. Код для пользовательского диалогового окна выглядит следующим образом:

 define([ 'dojo/_base/declare', "dojo/_base/lang", 'dojo/text!./templates/ExtendDeadlineDialog.html', 'ecm/widget/dialog/BaseDialog', "dijit/_TemplatedMixin", 'icm/model/properties/controller/ControllerManager', 'icm/base/Constants', 'ecm/widget/dialog/ErrorDialog',  ], function ( declare, lang, template, BaseDialog, _TemplatedMixin, ControllerManager, Constants, ErrorDialog ) { return declare('eu.europa.ec.cmr.dialog.ExtendDeadlineDialog', [BaseDialog, _TemplatedMixin], {  templateString: template,  currentDeadlineDate: null,   constructor: function (currentDeadlineDate,workItemEditable) {  this.currentDeadlineDate = currentDeadlineDate;  console.log(workItemEditable);  },   postCreate: function () {  this.inherited(arguments);  this.setTitle("Extend Task Deadline");  this.setResizable(true);  this.setExpandable(false);  this.setSize(300, 280);  this.currentDateBox.set("value",this.currentDeadlineDate);  this.newDateBox.constraints.min = this.currentDateBox.get("value");   },  startup: function() {  this.inherited(arguments);   },  onCancel: function() {  this.inherited(arguments);  this.destroy();  },  onConfirm: function () {  this.inherited(arguments);  if (this.newDateBox.get("value")) {  this.destroy();  }  else {  let errorDialog = new ErrorDialog("New date cannot be blank");  errorDialog.showMessage("New date cannot be blank");  }  } });  });  

Это настраиваемое диалоговое окно состоит из двух областей текста даты и двух кнопок. Когда пользователь нажимает кнопку подтверждения, мне нужно получить новую дату и сохранить ее в файловой сети. Когда я запускаю этот код и открываю диалоговое окно, пользовательское диалоговое окно не может быть создано, и проблема заключается в переменной workItemEditable, которую я пытаюсь передать через ее конструктор. Однако эта переменная необходима, если я хочу сохранить новую дату в файловой сети. Кто-нибудь знает, почему это происходит или как вернуть значение даты обратно в исходный scipt адаптера сценария?