我正在试图弄清楚如何与Alfresco Share进行一些小程序间通信。 这是一个简单的用例:
我们有2个小面板,让我们称它们为A和B.我希望能够在A中填写一个字段“name”(让我们说值为“Toto”),然后单击“提交”按钮。点击A中的提交按钮后,B应更新为“Good Morning Toto”等问候语。
谢谢你的回答。
感谢您的回答。你能详细说一下“让dashlet_b.get.html.ftl发布一些内容到dashlet_a.post.html.ftl”吗?
在dashlet_b.get.html.ftl中你有类似的东西我想:
<form id="..." action="" method="POST">
<input id="name" type="text" name="name" value=""/>
<input type="submit" id="send" value="Send" /></form>
当你提交表格时,它会找到dashlet_b.post.js吗?您如何实际告诉将表单发送到dashlet_a.post.js?
答案 0 :(得分:7)
要创建这些动态小面板,仅使用服务器端小面板webscript是不够的。您需要在浏览器中使用javascript逻辑来通知其他小面包的更改。这就是Alfresco通常这样做的方式:
浏览器Javascript Dashlet A:
YAHOO.Bubbling.fire("interDashletMessage",
{
message: "Hello World."
});
浏览器Javascript Dashlet B:
YAHOO.Bubbling.on("interDashletMessage", function(layer, args) {
var message = args[1].message;
alert(message); // or write it to the dashlets HTML content
});
这将使用名为“interDashletMessage”的自定义事件将信息从dashlet A发送到dashlet B.
如果您的dashlet B只显示一些消息,那么使用这些事件发送数据就足够了。如果它更复杂,您的dashlet需要首先将它的数据发布到存储库,然后触发“刷新”事件并让dashlet B从存储库刷新它的内容。这将涉及您可能需要编写的多个网页脚本。
答案 1 :(得分:0)
我猜这很简单。
每个Dashlet实际上都是一个webscript。所以你可以有多个webscript用于不同的用途。就像我有dashlet_a。获取 .html.ftl和dashlet_a。发布 .html.ftl。 事实上,这两个是相同的webscript,一个只是在帖子上,另一个在get上。
所以你可以做的是让dashlet_b。获取 .html.ftl将一些内容发布到dashlet_a.post.html.ftl。因此,您正在将值从b提交到。
下一步是刷新dashlet_a,一种方法是进行整页刷新,但这并不好。 以下是更好的方法: 在dashlet_a。 post .html.ftl中,您只需通过YUI / JQuery设置dashlet_a中定义的字段的值。获取 .html.ftl。
查看默认可配置的dashlet如何执行此操作,例如webview。如果你在配置中添加了一些内容,则会直接显示该值。