Luis Valencia
Luis Valencia

Reputation: 33988

Proper syntax for javascript callback

I have a syntax error on the code below, all I want is a function to be executed on a call back but I am not sure what the error is.

should be close to:

onClickCallback: UpdateBillCycleStatusToCompleted(1)

<script type="text/javascript">
    SP.SOD.executeFunc("callout.js", "Callout", function () {
        var itemCtx = {};
        itemCtx.Templates = {};
        itemCtx.BaseViewID = 'Callout';
        // Define the list template type
        itemCtx.ListTemplateType = 101;
        itemCtx.Templates.Footer = function (itemCtx) {
            // context, custom action function, show the ECB menu (boolean)
            return CalloutRenderFooterTemplate(itemCtx, AddCustomCompleteAction, true);
        };
        SPClientTemplates.TemplateManager.RegisterTemplateOverrides(itemCtx);
    });

    function AddCustomCompleteAction(renderCtx, calloutActionMenu) {
        // Add your custom action
        calloutActionMenu.addAction(new CalloutAction({
            text: "Custom Action",
            tooltip: 'This is your custom action',
            onClickCallback: UpdateBillCycleStatusToCompleted(1)
        }
        }));

    // Show the default document library actions
    CalloutOnPostRenderTemplate(renderCtx, calloutActionMenu);

    // Show the follow action
    calloutActionMenu.addAction(new CalloutAction({
        text: Strings.STS.L_CalloutFollowAction,
        tooltip: Strings.STS.L_CalloutFollowAction_Tooltip,
        onClickCallback: function (calloutActionClickEvent, calloutAction) {
            var callout = GetCalloutFromRenderCtx(renderCtx);
            if (!(typeof (callout) === 'undefined' || callout === null)) callout.close();
            SP.SOD.executeFunc('followingcommon.js', 'FollowSelectedDocument', function () {
                FollowSelectedDocument(renderCtx);
            });
        }
    }));
    }

    function UpdateBillCycleStatusToCompleted(itemId) {
        alert('Completed');
        //var clientContext = new SP.ClientContext.get_current();
        //var oList = clientContext.get_web().get_lists().getByTitle('Bill Cycles');
        //this.oListItem = oList.getItemById(itemId);
        //oListItem.set_item('Bill Cycle Preparation Status', 'Completed');
        //oListItem.update();
        //clientContext.executeQueryAsync(Function.createDelegate(this, this.StatusCompletedSucceeded), Function.createDelegate(this, this.StatusCompletedFailed));
    }

    function StatusCompletedSucceeded() {
        alert('Item updated!');
    }

    function StatusCompletedFailed(sender, args) {
        alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
    }
</script>

Upvotes: 0

Views: 575

Answers (1)

Niet the Dark Absol
Niet the Dark Absol

Reputation: 324630

Unless UpdateBillCycleStatusToCompleted(1) actually return function() {...} then you're doing it wrong.

onClickCallback: function() {UpdateBillCycleStatusToCompleted(1);}

That sort of thing should work.

Upvotes: 1

Related Questions