Sharepoint SP.Ribbon.WebPartComponent.getWebPartAdder()返回未定义的

Sharepoint SP.Ribbon.WebPartComponent.getWebPartAdder()返回未定义的,sharepoint,sharepoint-2013,Sharepoint,Sharepoint 2013,我正在使用源代码处理用户web部件按钮单击事件 函数“addWebPart()”调用函数“SP.Ribbon.WebPartComponent.getWebPartAdder()”,该函数本应返回加法器实例,但有时返回未定义的 如果我添加一个while循环以等待实例值正确返回,那么VM中的浏览器会暂停一段时间。返回实例后,浏览器将再次响应。这只在某些情况下发生 我正在使用SharePoint 2013,我所指的代码部分是: addWebPart = function (wpCategory, w

我正在使用源代码处理用户web部件按钮单击事件

函数“addWebPart()”调用函数“SP.Ribbon.WebPartComponent.getWebPartAdder()”,该函数本应返回加法器实例,但有时返回未定义的

如果我添加一个while循环以等待实例值正确返回,那么VM中的浏览器会暂停一段时间。返回实例后,浏览器将再次响应。这只在某些情况下发生

我正在使用SharePoint 2013,我所指的代码部分是:

addWebPart = function (wpCategory, wpTitle) {

            var webPartAdder = SP.Ribbon.WebPartComponent.getWebPartAdder();

            while (webPartAdder == undefined)
                webPartAdder = SP.Ribbon.WebPartComponent.getWebPartAdder();

            // ... Other stuff ...
}

如何解决此问题?

对于任何想找到此问题答案的人,您必须调用“loadwPaderOnDemand()”函数,然后等待事件“\u spEventWebPartAdderReady”。然后查询“window.WPAdder”:

    addWebPartDelayed = function (webPartAdder, wpCategory, wpTitle) {

        var webPart = findWebPart(webPartAdder, wpCategory, wpTitle);
        if (webPart) {
            var zone = WPAdder._zones[0];
            var wpid = WPAdder._createWebpartPlaceholderInRte();
            WPAdder.addItemToPageByItemIdAndZoneId(webPart.id, zone.id, 0, wpid);
        }
        else
            alert('ERROR: Web part not found! Please try again after sometime.');
    },

    addWebPart = function (wpCategory, wpTitle) {

        var webPartAdder = window.WPAdder;

        if (webPartAdder == undefined) {
            LoadWPAdderOnDemand();
            ExecuteOrDelayUntilEventNotified(
                function () {
                    var webPartAdder = window.WPAdder;

                    addWebPartDelayed(webPartAdder, wpCategory, wpTitle);
                },
                "_spEventWebPartAdderReady");
        }
        else
            addWebPartDelayed(webPartAdder, wpCategory, wpTitle);            
    };

对于任何想找到这个问题答案的人来说,您必须调用'LoadWPAdderOnDemand()'函数,然后等待事件'\u spEventWebPartAdderReady'。然后查询“window.WPAdder”:

    addWebPartDelayed = function (webPartAdder, wpCategory, wpTitle) {

        var webPart = findWebPart(webPartAdder, wpCategory, wpTitle);
        if (webPart) {
            var zone = WPAdder._zones[0];
            var wpid = WPAdder._createWebpartPlaceholderInRte();
            WPAdder.addItemToPageByItemIdAndZoneId(webPart.id, zone.id, 0, wpid);
        }
        else
            alert('ERROR: Web part not found! Please try again after sometime.');
    },

    addWebPart = function (wpCategory, wpTitle) {

        var webPartAdder = window.WPAdder;

        if (webPartAdder == undefined) {
            LoadWPAdderOnDemand();
            ExecuteOrDelayUntilEventNotified(
                function () {
                    var webPartAdder = window.WPAdder;

                    addWebPartDelayed(webPartAdder, wpCategory, wpTitle);
                },
                "_spEventWebPartAdderReady");
        }
        else
            addWebPartDelayed(webPartAdder, wpCategory, wpTitle);            
    };

对于任何想找到这个问题答案的人来说,您必须调用'LoadWPAdderOnDemand()'函数,然后等待事件'\u spEventWebPartAdderReady'。然后查询“window.WPAdder”:

    addWebPartDelayed = function (webPartAdder, wpCategory, wpTitle) {

        var webPart = findWebPart(webPartAdder, wpCategory, wpTitle);
        if (webPart) {
            var zone = WPAdder._zones[0];
            var wpid = WPAdder._createWebpartPlaceholderInRte();
            WPAdder.addItemToPageByItemIdAndZoneId(webPart.id, zone.id, 0, wpid);
        }
        else
            alert('ERROR: Web part not found! Please try again after sometime.');
    },

    addWebPart = function (wpCategory, wpTitle) {

        var webPartAdder = window.WPAdder;

        if (webPartAdder == undefined) {
            LoadWPAdderOnDemand();
            ExecuteOrDelayUntilEventNotified(
                function () {
                    var webPartAdder = window.WPAdder;

                    addWebPartDelayed(webPartAdder, wpCategory, wpTitle);
                },
                "_spEventWebPartAdderReady");
        }
        else
            addWebPartDelayed(webPartAdder, wpCategory, wpTitle);            
    };

对于任何想找到这个问题答案的人来说,您必须调用'LoadWPAdderOnDemand()'函数,然后等待事件'\u spEventWebPartAdderReady'。然后查询“window.WPAdder”:

    addWebPartDelayed = function (webPartAdder, wpCategory, wpTitle) {

        var webPart = findWebPart(webPartAdder, wpCategory, wpTitle);
        if (webPart) {
            var zone = WPAdder._zones[0];
            var wpid = WPAdder._createWebpartPlaceholderInRte();
            WPAdder.addItemToPageByItemIdAndZoneId(webPart.id, zone.id, 0, wpid);
        }
        else
            alert('ERROR: Web part not found! Please try again after sometime.');
    },

    addWebPart = function (wpCategory, wpTitle) {

        var webPartAdder = window.WPAdder;

        if (webPartAdder == undefined) {
            LoadWPAdderOnDemand();
            ExecuteOrDelayUntilEventNotified(
                function () {
                    var webPartAdder = window.WPAdder;

                    addWebPartDelayed(webPartAdder, wpCategory, wpTitle);
                },
                "_spEventWebPartAdderReady");
        }
        else
            addWebPartDelayed(webPartAdder, wpCategory, wpTitle);            
    };