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
});