Я использую офисный диалог API в надстройке Word.Когда я устанавливаю локальное хранилище и читаю в диалоговом окне после его открытия, я вижу значение в диалоговом окне.Но когда диалог открыт и я установил локальное хранилище в parent, я не вижу этого в диалоге.Я использую localalstorage для общения с дочерним диалогом после запуска.Есть ли другой способ общения между родителем и ребенком после открытия диалога?использование Office.context.ui.messageParent при отправке сообщения из диалогового окна в родительский.
Main page:
$scope.opensettingDialog = function () {
Office.context.ui.displayDialogAsync("https://localhost/tz/setting", {90,50},
function (asyncResult) {
dialog = asyncResult.value;
dialog.addEventHandler(Office.EventType.DialogMessageReceived, processSettingDialog);
});}
function processSettingDialog (arg) {
var messageFromDialog = JSON.parse(arg.message);
if (messageFromDialog.messageType == "save") {
//do operations & store result
localStorage.setItem("tbSave", "true");
}
else {
dialog.close();
}
}
Settings Dialog:
$scope.acceptSettings = function () {
var messageObject = {
messageType: "savedoc"
};
var jsonMessage = JSON.stringify(messageObject);
Office.context.ui.messageParent(jsonMessage);
$scope.intervalpromise = $interval(checkSave2Update(), 1000);
};
//Wait for parent operation to complete
var checkSave2Update= function () {
var processingStatus = localStorage.getItem("tbSave");//it never has the value set in the parent page.
if ((processingStatus == "undefined") || (processingStatus == null)) {
$interval.cancel($scope.intervalpromise);
$scope.intervalpromise = $interval(checkSave2Update(), 1000);
return;
}
else {//cancel wait
$interval.cancel($scope.intervalpromise);
}
}