如何处理多个互连的javascript对象的加载?

时间:2011-03-22 15:13:43

标签: jquery asp.net architecture

(我正在使用伪代码)

我有一系列ASP.NET自定义控件。每一个都涉及很多javascript,所以他们有相应的.js文件。他们注入一行'var this.clientid = new jsobject();',因此每个控件在页面上都有一个javascript对象,ID与自身相同。

除了某些控件依赖于其他控件外,这种方法很好。例如,CatFlap对象需要了解CatHouse。所以在它的构造函数中,它将接受CatFlap对象,有点像这样:

page.inject("var " + this.ClientID + " = new CatFlap(" + CatHouse.ClientID + ");";

但是在CatFlap的构造函数中,如果在页面上,则2个自定义控件的顺序相反,例如,CatHouse是未定义的。之前是因为它尚未构建该项目。

一个解决方案是将声明放入document.ready(),但这失败是因为我的控制系统比上面稍微复杂一些,其他依赖项如CatFlapSwitch取决于CatFlap,因此两个构造函数都会进入document.ready ()并且问题会再次出现。

有很多工具套件有几个自定义控件,有谁知道他们如何设法解决这个问题?

问题的一个示例:http://jsfiddle.net/tckuM/

如果你切换两个对象声明行,你会收到一个错误,我想知道如何减轻它。

1 个答案:

答案 0 :(得分:1)

是,document.ready或在ASP.NET AJAX中,Sys.Application.add_load是延迟代码执行的事件处理程序,您必须依赖它。此外,您必须将外部依赖项作为属性传递,而不是作为构造函数参数传递。由于你提到的问题,它不能很好地与构造函数参数一起使用。您可以将所有内容与属性一起使用,而不需要document / ready / app.load事件......

HTH。