在开始业务流程之前,我选择了附件。我可以多次这样做,删除附件并再次选择。
我想显示包含附件信息的动态表。
例如,要检索所有附件详细信息,我使用此类代码:
...
var divWithAnchors = YAHOO.util.Selector.query("#page_x002e_data-form_x002e_task-details_x0023_default_assoc_packageItems-cntrl")[0];
var anchors = divWithAnchors.getElementsByTagName('a');
var attachments = new Array();
for(var i = 0; i < anchors.length; i++) {
attachments[i] = anchors[i].href.split('=')[1];
}
...
它为我提供了对节点的引用,例如:
...
workspace://SpacesStore/c5a27463-c2aa-4c70-aca7-1f999d3ac76a
workspace://SpacesStore/29e9f035-403c-47b6-8421-624d584ff7eb
workspace://SpacesStore/712aaca2-9c90-4733-a690-bbf9bacb26e6
workspace://SpacesStore/68893fde-ee7c-4ecb-a2df-d4953dc69439
...
然后我可以对REST后端(WebScripts)执行AJAX请求并获得响应:
...
for(var i = 0; i < attachments.length; i++) {
Alfresco.util.Ajax.jsonGet(
...
// parse JSON and fill the table
这是正确的方法吗?我不确定ID:
page_x002e_data-form_x002e_task-details_x0023_default_assoc_packageItems-cntrl
这是一个常数吗?..这个标识符可以改变吗?..
我将非常感谢这些信息。谢谢大家。
答案 0 :(得分:1)
事实上,所有这些NodeRef都可以在对象selectedItems = {}
中使用,并且可以通过getAddedItems()
方法获得(参见object-finder.js
):
...
/**
* Selected items. Keeps a list of selected items for correct Add button state.
*
* @property selectedItems
* @type object
*/
selectedItems: null,
...
/**
* Returns items that have been added to the current value
*
* @method getAddedItems
* @return {array}
*/
getAddedItems: function ObjectFinder_getAddedItems() {
var addedItems = [],
currentItems = Alfresco.util.arrayToObject(this.options.currentValue.split(","));
for (var item in this.selectedItems) {
if (this.selectedItems.hasOwnProperty(item)) {
if (!(item in currentItems)) {
addedItems.push(item);
}
}
}
return addedItems;
},
...
接下来,需要将这些NodeRef发送到WebScript并使用NodeService
服务获取所有必需的属性。