Buildfire - 是否可以从管理控制台

时间:2017-12-12 16:01:20

标签: buildfire

我有两个需要相互通信的插件。其中一个插件允许用户创建锻炼。另一个插件需要能够允许用户链接到锻炼插件到特定的锻炼。

要做到这一点,最好能够进入消费插件,点击“链接锻炼”之类的东西,让它通过buildfire.navigation.navigateTo带到锻炼插件,在那里我可以选择一个锻炼(因为锻炼数据只能由此插件访问)。从那里,一旦做出选择,它将导航我回到另一个插件,其中包含我链接的锻炼记录的id。通过这种方式,我可以保存锻炼的ID,并且每当有人想要从窗口小部件中查看锻炼时,它就能够将它们导航到锻炼插件并加载正确的ID。

当我在控制面板中尝试实现此功能时,导航.navigateTo错误消息显示:

postMessageHandler error: TypeError: Cannot read property 'source' of undefined
at Object.navigateTo (pluginAPI.js:265)
at PluginAPI.postMessageHandler (pluginAPI.js:221)
at tryPMH (postMaster.js:44)
at Object._acceptRequest (postMaster.js:62)
at postMessageHandler (postMaster.js:29)

导航.navigateTo只能在小部件方面使用吗?这是我的导航对象供参考:

        pluginId: '6d9d8456-d2c9-4ddb-80b8-**********',
        instanceId: '6drt3456-d2c9-4ddb-80b8-fdbbff854r1b-*********',
        folderName: 'theplugin',
        title: '',
        queryString: '?id=abc123def456'

另外,我不确定folderName应该是什么。看起来它是从SDK源代码中需要的,但我无法弄清楚我应该放在那里。我把一些我认为可能有用的东西放在了它上面,但它可能是为什么它不起作用的罪魁祸首。寻求确认。

尽管如此,即使我使用Widget中的导航,当它为新加载的插件加载新插件和管理面板时,显示“404 not found”而不是加载管理面板。对此也有任何想法吗?

1 个答案:

答案 0 :(得分:1)

如果您希望控件触发窗口小部件上的导航,则需要使用messaging。请参阅下面的示例。

在控件上:

buildfire.messaging.sendMessageToWidget({
                    name: 'OPEN_PLUGIN',
                    message: {
                        data: pluginData
                    }
                });

在小部件上:

    buildfire.messaging.onReceivedMessage = function(message){
       var plugin = event.message.data;
       switch (message.section){
        case 'OPEN_PLUGIN':
            if (plugin && plugin.pluginType && plugin.pluginType.folderName)
                    fName = plugin.pluginType.folderName;
                else if (plugin && plugin.folderName)
                    fName = plugin.folderName;

                buildfire.navigation.navigateTo({
                    pluginId: plugin.pluginId,
                    instanceId: plugin.instanceId,
                    title: plugin.title,
                    folderName: fName
                });
        break;
    }
}

就文件夹名称而言,有几种方法可以获得它。一种简单的方法是在控制面板中编辑插件实例。该URL将如下所示:

/ pluginControl / ba4139dd-09c6-4121-aa4a-c72570af07fc / ba4139dd-09c6-4121-aa4a-c72570af07fc - ********** /主页/ 52 /

转换为以下格式:

/ pluginControl / pluginId / pluginInstanceId /标题/ FOLDERNAME

因此,在此示例中,文件夹名称为52。