Javascript 如何从我的页面调用在requirejs模块中定义的函数?

Javascript 如何从我的页面调用在requirejs模块中定义的函数?,javascript,jquery,asp.net,requirejs,Javascript,Jquery,Asp.net,Requirejs,在我的服务器页面中,我有: <asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="server"> <script src="../../Scripts/libs/require.js" data-main="../../Scripts/main.js"></script> <asp:GridView> ... <Column

在我的服务器页面中,我有:

<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<script src="../../Scripts/libs/require.js" data-main="../../Scripts/main.js"></script>

<asp:GridView>
    ...
    <Columns>
        <asp:TemplateField>
            <ItemTemplate>
                <asp:LinkButton
                    ID="lb" runat="server" 
                    OnClientClick='<%# string.Format("return onButtonClick({0});", Eval("ProviderId") %>'
                </asp:LinkButton>
            </ItemTemplate>
        </asp:TemplateField>
        ...
    </Columns>
<asp:GridView>
main.js中定义的函数在服务器端不可见,即OnClientClick按钮处理程序。此外,我需要将“ProviderId”数据绑定字段作为函数参数传递


关于如何使此函数对aspx代码可见,您有什么想法吗?

在ASP方面没有太多经验,但可以假设,将函数导出到全局范围可能会奏效。我想试试这样的东西:

 require.config({
     baseUrl: "../../Scripts",
        ...
 });

 require(function () {
     function onButtonClick(providerId) {
         ...
     }
     window.onButtonClick = onButtonClick
 });
不知道这是否重要,但是:
即使在domReady事件之后,requirejs也需要一些时间来加载所有模块,因此,理论上,函数可能尚未定义。使用of可以绕过这个问题。

是的,这种方法可以解决这个问题,它实际上是我正在寻找的更优雅的解决方案。听起来我在这里遗漏了一些东西,也许requirejs在操作DOM对象时实施了一种不同的方法,而不仅仅是将函数导出到全局范围。
 require.config({
     baseUrl: "../../Scripts",
        ...
 });

 require(function () {
     function onButtonClick(providerId) {
         ...
     }
     window.onButtonClick = onButtonClick
 });