如何运行名​​称空间内的JavaScript函数

Cam*_*ron 6 javascript

如果我有类似的东西:

App = {
    editingMode: function ()
    {
        function setEditingMode(entityID) {
            $('#editingMode').val('1');
            $.ajax({
                type: "POST",
                url: "/Organisations/Manage/LockEntity/",
                data: "entityID=" + entityID
            });
        }
        function setEditingModeOff(entityID) {
            if ($("#myform").valid() == true)
            {
                $('#editingMode').val('0');
                $.ajax({
                    type: "POST",
                    url: "/Organisations/Manage/UnlockEntity/",
                    data: "entityID=" + entityID
                });
            }
        }
    }
};
Run Code Online (Sandbox Code Playgroud)

我如何运行其中一个内部函数?

App.editingMode();但那我该怎么办呢setEditingMode

Nik*_*off 8

您可以使用不同的结构来完成您想要的任务.我不知道它是否会破坏你正在使用的其他东西,所以我只想举个例子.我不确定这是否是实际的解决方案,请看看并告诉我这是不是你需要的.如果您使用:

 var App = {
                editingMode:
                {
                    setEditingMode: function(entityID) {
                        $('#editingMode').val('1');
                        $.ajax({
                            type: "POST",
                            url: "/Organisations/Manage/LockEntity/",
                            data: "entityID=" + entityID
                        });
                    },
                    setEditingModeOff: function(entityID) {
                        if ($("#myform").valid() == true)
                        {
                            $('#editingMode').val('0');
                            $.ajax({
                                type: "POST",
                                url: "/Organisations/Manage/UnlockEntity/",
                                data: "entityID=" + entityID
                            });
                        }
                    }
                }
            };
Run Code Online (Sandbox Code Playgroud)

你可以像这样调用editingMode的方法:

App.editingMode.setEditingModeOff(1);
Run Code Online (Sandbox Code Playgroud)

请注意,它们仍将封装在App中,您不必将它们移动到全局范围.


ale*_*lex 0

您需要返回对一个对象的引用,或者以其他方式使其可以从函数外部访问,例如,将其附加到window(有效地使其成为全局对象)或App对象。