我一直在为sharepoint开发扩展。我试图为文档库实现自定义标注(使用fancytree进行库内容呈现)。 作为参考,我使用了https://dev.office.com/sharepoint/docs/sp-add-ins/highlight-content-and-enhance-the-functionality-of-sharepoint-hosted-sharepoint。
我在一个单独的函数execCallout(data)中定义了标注功能。 (为简单起见,省略了数据功能)。
我有两个风格:execCallout由用户启动/调用(没有预加载数据),execCallout加载了启动数据。在这两种情况下,我都使用相同的execCallout。
function execCallout (data) {
console.log("demo");
//get our launchpoint - where callout will appear
var targetElement = document.querySelectorAll(".fancytree-active.fancytree-focused .fancytree-title")[0];
//Configure new Callout
var calloutOptions = new CalloutOptions();
calloutOptions.ID = 'MyCustomCallOut';
calloutOptions.launchPoint = targetElement;
calloutOptions.beakOrientation = 'leftRight';
calloutOptions.content = ' My Content';
calloutOptions.title = 'My Title';
// check for current callout
var myCallOut = CalloutManager.createNewIfNecessary(calloutOptions);
//Create custom action for callout
var myAction = new CalloutActionOptions();
myAction.text = 'My Special Action';
myAction.onClickCallback = function(event, action)
{
alert("I can do whatever you want");
};
var newAction = new CalloutAction(myAction);
//Add the action to the callout
myCallOut.addAction(newAction);
myCallOut.set({ openOptions: { event: "hover" } }); //or click
myCallOut.open();
}
第一种情况正常,即在用户点击标注时启动/调用execCallout。
然而,当预加载数据时,我得到“Uncaught ReferenceError:myCallOut未定义”(从调试器控制台我看到该函数被调用,但是calloutManager没有与我的launchPoint关联的标注)。看起来好像没有启动calloutManager。 在任何时候从调试器控制台启动execCallout都可以解决问题。
欢迎提出遗漏的内容和地点。
答案 0 :(得分:0)
关于这个问题的问题:问题是由fancytree渲染引起的。标注是在"树"没有完全呈现。默认情况下,渲染值失败"因此默认树渲染导致问题。
解决方案:在标注操作之前手动启动树渲染,以便没有值/变量消失。