我是 Office 365 字 JavaScript API 的新手。我正在尝试使用对话框 api 将 Json 对象从父级发送到对话框。但我找不到更好的解决方案。我发现可以使用下面的代码片段将 Json 对象从对话框发送到父级。
Office.context.ui.messageParent
有人可以用代码片段给我一个很好的解决方案来解决这个问题吗?
我是 Office 365 字 JavaScript API 的新手。我正在尝试使用对话框 api 将 Json 对象从父级发送到对话框。但我找不到更好的解决方案。我发现可以使用下面的代码片段将 Json 对象从对话框发送到父级。
Office.context.ui.messageParent
有人可以用代码片段给我一个很好的解决方案来解决这个问题吗?
你可以尝试类似的东西
在父网页(实际加载项)中的 javascript 代码
Office.context.ui.displayDialogAsync(url, options, function(result) {
var dialog = result.value;
dialog.addEventHandler(Office.EventType.DialogMessageReceived, function(args){
dialog.close();
var json = JSON.parse(args.message);
//do what ever you need to do...
});
});
注意:为了简单起见,如果回调函数收到错误结果,我省略了“错误检查”。你也应该注意这一点。
打开的网页url
会有一个函数,将json对象表示为字符串后将其推回
var asString = JSON.stringify(myObj);
Office.context.ui.messageParent(asString);
当然对话框窗口中打开的网页也必须引用Office.js。这是这个所谓的 dialogAPI https://dev.office.com/reference/add-ins/shared/officeui的文档链接
编辑:
最初的问题是将数据从父母发送给孩子
如果您需要向 dialogAPI 中打开的页面发送信息。我建议您将查询参数附加到url
. 您可以对 Json 对象进行字符串化并传递它。这不是很干净的想法。
将 JSON 序列化为查询字符串的标准化方法?
见这里:https ://dev.office.com/docs/add-ins/develop/dialog-api-in-office-add-ins
找到“将信息传递给对话框”部分。
两种主要方式:
您可以轻松地将 JSON 数据或对象发送回您的父级。
此代码段应该在您的子页面(对话框页面)的 JS 文件中。
(function () {
"use strict";
// The Office initialize function must be run each time a new page is loaded
Office.initialize = function (reason) {
$(document).ready(function () {
$('#btnLogin').click(submit);
});
};
function submit() {
// Get and create the data object.
var email = $('#txtEmail').val();
var password = $('#txtPassword').val();
var data = {
email: email,
password: password
}
// Create the JSON and send it to the parent.
var json = JSON.stringify(data);
Office.context.ui.messageParent("json");
}
})();