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

时间:2014-01-04 03:36:44

标签: 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>
    ...
    <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看起来像:

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

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

在main.js中定义的函数在服务器端不可见,即OnClientClick按钮处理程序。此外,我需要将“ProviderId”数据绑定字段作为函数参数传递。

关于如何使这个函数对aspx代码可见的任何想法?

1 个答案:

答案 0 :(得分:0)

在ASP中没有经验,但可以假设,将函数导出到全局范围可能会有所帮助。我会尝试这样的事情:

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

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

不知道这是否重要,但是: 即使在domReady事件之后,requirejs也需要一些时间来加载所有模块,因此,理论上,该功能可能尚未定义。使用requirejs optimizer可以绕过这个问题。