我有一个非常具体的问题与网关插件,我试图完成。
我正在尝试使用以下命令导航到另一个插件
'buildfire.pluginInstance.get($scope.deepLinnk,function (err, plugin) {
if (err) {
$scope.status = 'error!';
}
else {
console.log(plugin);
$scope.navigateSignIn(plugin);}
});
$scope.navigateSignIn = function (plugin) {
buildfire.navigation.navigateTo({
pluginId: plugin.token,
instanceId: plugin.instanceId,
title: plugin.title,
folderName: plugin.pluginTypeId
});
};navigateTo对象是我能让buildfire.navigate.navigateTo在buildfire插件上工作的唯一方法。
然而,当我试图导航到我已经创建的插件时,调试器显示了一个警告,说“无法加载配置文件”,然后整个平台崩溃,让我再次登录。
如何导航到我创建的插件?
发布于 2017-08-08 02:05:08
你是如何获得pluginId、instanceId和folderName的?你不能简单地保存它们或者硬编码它们。您需要启动dynamic data查找,请参阅https://github.com/BuildFire/sdk/wiki/How-to-use-the-Datastore-Dynamic-Data
您还可以查看一个示例,如文件夹插件https://github.com/BuildFire/folderPlugin/blob/d84551feb06cfc304c325480ca96d87795a66929/widget/widget.controller.js#L163
基本上,每次更新插件时,诸如folderName或title之类的插件标识符都会发生变化。因此,您需要使用dynamic data保持参考数据的新鲜性。
这里有一个简单的例子,可能会描绘出一幅更好的图景。如果您引用了一个标题为"Holiday Sales“的插件,那么您将保存到您的数据存储集合{title: "Holiday Sales"}中,并因此使用该标题来引用它。这可能会在短时间内起作用。但是,如果应用程序所有者现在将标题更改为"Summer Sale“,则您的副本已过期。在传统数据库中,您将有两个表,一个表包含真值来源,另一个表包含引用第一个表的foreign key。这样,您就可以join并始终显示最新的数据。
Dynamic data在某种程度上是一种辅助查找。您只需给它一个键以及该键引用的内容。然后,在运行时,当您进行调用时,它将进行您需要的服务器端查找,并向您返回您正在查找的最新数据。
示例:
buildfire.datastore.save("MyData",{
_buildfire: { /// key identifier
myPluginsToNavTo: {
data:["123123-123123","asdasda-asdasd"] /// plugin instances
,dataType: "pluginInstance"
}
}
}); ======
buildfire.datastore.getWithDynamicData("MyData",function(err,data){
// data would be:
/*
_buildfire: { /// key identifier
myPluginsToNavTo: {
data:["55f71347d06b61b4010351dc","asdasda-asdasd"]
,dataType: "pluginInstance"
,result: [ /// <=============new property added dynamically
{
"id": "55f71347d06b61b4010351dc",
"data": {
"pluginTypeId": 3212,
"token": "6372b101-addf-45da-bb0a-9208a09e7b6b",
"title": "YouTube Plugin",
"iconUrl": "http://s3-us-west-2.amazonaws.com/pluginserver/plugins/6372b101-addf-45da-bb0a-9208a09e7b6b/resources/image.png",
}
,{
"id": "asdasda-asdasd",
"data": {
"pluginTypeId": 123123,
"token": "1223123123-addf-45da-bb0a-9208a09e7b6b",
"title": "Plugin 2",
"iconUrl": "...",
}
}
}
]
}
}
*/
});希望这能有所帮助
https://stackoverflow.com/questions/45475095
复制相似问题