未定义Sharepoint 2013标注

时间:2017-08-25 05:40:43

标签: javascript jquery events sharepoint sharepoint-2013

我一直在为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都可以解决问题。

欢迎提出遗漏的内容和地点。

1 个答案:

答案 0 :(得分:0)

关于这个问题的问题:问题是由fancytree渲染引起的。标注是在"树"没有完全呈现。默认情况下,渲染值失败"因此默认树渲染导致问题。

解决方案:在标注操作之前手动启动树渲染,以便没有值/变量消失。