4

我是 Office 365 字 JavaScript API 的新手。我正在尝试使用对话框 api 将 Json 对象从父级发送到对话框。但我找不到更好的解决方案。我发现可以使用下面的代码片段将 Json 对象从对话框发送到父级。

Office.context.ui.messageParent

有人可以用代码片段给我一个很好的解决方案来解决这个问题吗?

4

3 回答 3

2

你可以尝试类似的东西

在父网页(实际加载项)中的 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 序列化为查询字符串的标准化方法?

于 2016-11-01T08:54:12.793 回答
0

见这里:https ://dev.office.com/docs/add-ins/develop/dialog-api-in-office-add-ins

找到“将信息传递给对话框”部分。

两种主要方式:

  • 将查询参数添加到 URL
  • 将信息存储在主机窗口和对话框都可以访问的位置,例如本地存储
于 2016-12-28T10:44:00.620 回答
0

您可以轻松地将 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");
    }    
})();
于 2016-11-14T04:33:23.620 回答